13

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

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

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

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

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

4

6 に答える 6

24

試すunset($array[null]);

それが機能しない場合は、キーのタイプを確認できるため、の代わりにvar_exportorを使用して配列を出力します。PHP 構文でデータを表示するために使用します。var_dumpprint_rvar_export

var_export($array);

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

于 2008-10-28T13:02:29.310 に答える
2

試した:

$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 )

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

于 2008-10-28T12:58:04.280 に答える
1

あなたに何を言うべきかわからない。このスクリプトの実行

<?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
)

「null」配列キーが空の文字列にどのように型変換されたかがわかりますか?

配列のコピーで作業していませんか? 関数内からこの unset() の呼び出しを行った場合は、そうである可能性があります。

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

于 2008-10-28T14:43:26.670 に答える
1

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

于 2008-10-28T13:04:27.463 に答える
1

私の推測では、それは空の文字列ではありません。次のことを試して、何が得られるかを確認してください。

foreach ($array as $index => $value) {
    echo $index;
    echo ' is ';
    echo gettype($index);
    echo "\n";
}
于 2008-10-28T12:46:13.023 に答える
0

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

私が探しているのは次のようなものです。

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

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

私はこのようなものを探しています:

array (
  '' => 1,
)
array (
)
于 2008-10-28T14:12:17.717 に答える