我有一个似乎是空字符串的键,但是使用 unset($ array [""]); 不会删除键/值对。我没有看到另外一个功能可以实现我想要的功能,所以我猜测只调用一个函数会更复杂。

print_r上元素的行是 [] => 1 ,它向我指示密钥是空字符串。

使用var_export,该元素列为''=> 1

使用var_dump,该元素列为 [""] => int(1)

到目前为止,我已经尝试了所有建议的删除方法,但没有删除该元素。我试过 unset($ array [""]); unset($ array ['']); unset($ array [ null]); 没有运气。

有帮助吗?

解决方案

尝试 unset($ array [null]);

如果不起作用,请通过 var_export var_dump 而不是 print_r 打印数组,因为这样可以查看类型关键。使用 var_export 以PHP语法查看数据。

<代码> var_export($阵列);

请注意,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/>';

GOT:

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";
}

尝试使用 var_dump 而不是 print_r 。这可以让您更好地了解密钥究竟是什么。

不知道该告诉你什么。运行此脚本

<?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上测试的

请发布您用于删除该元素的代码以及该行之前和之后的检查器代码。

我正在寻找的是这样的:

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

还请发布 var_export 行的完整输出。

我正在寻找类似的东西:

array (
  '' => 1,
)
array (
)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top