PHPの連想配列から空のキーを持つ値を削除するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/243132

  •  04-07-2019
  •  | 
  •  

質問

空の文字列のように見えるキーがありますが、 unset($ array [""]); を使用してもキー/値のペアは削除されません。私が望んでいることをする別の関数が表示されないので、関数を呼び出すだけの方が複雑だと推測しています。

print_rの要素の行は [] =>です。 1 。これは、キーが空の文字列であることを示しています。

var_exportを使用すると、要素は '' =>としてリストされます。 1

var_dumpを使用すると、要素は [""] => int(1)としてリストされます。

これまで、提案されたすべての削除方法を試しましたが、要素を削除したものはありません。 unset($ array [""]); unset($ array ['']); 、および unset($ array [ null]); 運がありません。

役に立ちましたか?

解決

unset($ array [null]);

をお試しください

それでもうまくいかない場合は、 print_r ではなく var_export または var_dump を使用して配列を印刷します。キーの。 var_export を使用して、PHP構文のデータを表示します。

var_export($ array);

var_exportは再帰構造では機能しないことに注意してください。

他のヒント

試した:

$someList = Array('A' => 'Foo', 'B' => 'Bar', '' => 'Bah');
print_r($someList);
echo '<br/>';
unset($someList['A']);
print_r($someList);
echo '<br/>';
unset($someList['']);
print_r($someList);
echo '<br/>';

重要:

Array ( [A] => Foo [B] => Bar [] => Bah )
Array ( [B] => Bar [] => Bah )
Array ( [B] => Bar )

キーの出所も分析する必要があります...

空の文字列ではないようです。以下を試して、得られるものを確認してください。

foreach ($array as $index => $value) {
    echo $index;
    echo ' is ';
    echo gettype($index);
    echo "\n";
}

print_r の代わりに var_dump を使用してみてください。これにより、キーが正確に何であるかをよりよく理解できる場合があります。

何を伝えればよいかわかりません。このスクリプトの実行

<?php

$arr = array(
        false   => 1
    ,   true    => 2
    ,   null    => 3
    ,   'test'  => 4
//  ,   ''      => 5
);

print_r( $arr );

foreach ( $arr as $key => $value )
{
    var_dump( $key );
}

unset( $arr[''] );

print_r( $arr );

次の出力が表示されます

Array
(
    [0] => 1
    [1] => 2
    [] => 3
    [test] => 4
)
int(0)
int(1)
string(0) ""
string(4) "test"
Array
(
    [0] => 1
    [1] => 2
    [test] => 4
)

&quot; null&quot;配列キーが空の文字列に型変換されましたか?

アレイのコピーを使用していないのですか?関数内からこのunset()の呼び出しを行った場合、あなたがいる可能性があります。

これはPHP 5.2.0でテストされました

その行の前後に要素とチェッカーコードを削除するために使用するコードを投稿してください。

探しているのは次のようなものです:

var_export($array);
echo "\n";
unset($array[""]);
var_export($array);

var_export の両方の行の完全な出力も投稿してください。

次のようなものを探しています:

array (
  '' => 1,
)
array (
)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top