删除没有指定名称的密钥

时间:2018-10-09 06:54:27

标签: php arrays unset

我有一个像这样的数组:

Array
(
    [44] => 2
    [21] => 2
    [] => 2
    [27] => 2
)

如何查找和删除(未设置)没有指定名称的键?因此,在这种情况下,数组应如下所示:

Array
(
    [44] => 2
    [21] => 2
    [27] => 2
)

5 个答案:

答案 0 :(得分:2)

可能是键unsigned char(空字符串)

在这种情况下,假设您有

''

然后尝试取消设置

   $myArray = [
    [44] => 2,
    []   => 2,
    [21] => 2,
    [27] => 2,
   ]

答案 1 :(得分:1)

似乎您有一个数组(键值) 在这种类型的数组中,我们有一个键,而没有任何键的单元格是不可能的。 因此,正如您在问题中提到的那样,似乎没有任何键的单元格已经具有''(空字符串)键。我的意思是它的定义就是这样

$array['']=2;

,因此您只需将其设置为正常即可。像这样

unset( $array['']);

因为如果您将单元格定义为波纹管,

 $array[]=2;

它自动给出第一个可用的数字键。 例如,如果您有:

 $array[4]=5;
 $array[]=6;

它会自动给出下一个空闲索引,对php意味着这样:

 $array[4]=5;
 $array[5]=6;

我希望它能为您提供帮助。

答案 2 :(得分:0)

if (($key = array_search(null', $array)) !== false) {
    unset($array[$key]);
}

我建议您阅读this thread

答案 3 :(得分:0)

我认为最好的解决方案将是最简单的解决方案:

$array = [
44 => 2,
21 => 2,
'' => 2,
27 => 2
];

$results = [];

foreach ($array as $k => $a) {
    if (!empty($k)) {
        $results[$k] = $a;
    }
}

var_dump($results);

sandbox

答案 4 :(得分:-1)

您可以尝试以下方法:

$arrayWithoutNullKeyMembers = array_filter($arrayWithNullKeyMembers,
                        function($key){ return !empty($key); }, ARRAY_FILTER_USE_KEY);