【问题标题】:Remove keys without specified names删除没有指定名称的键
【发布时间】:2019-03-13 20:58:54
【问题描述】:

我有一个这样的数组:

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

如何查找和删除(取消设置)没有指定名称的键?所以在这种情况下,数组应该是这样的:

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

【问题讨论】:

  • 如何将值添加到数组中?所有键都必须是名称。如果您将值添加为 $array[] = 2 那么 key 将是计数的下一个键,或 0。
  • 关键是'' 不是吗?创建一个新数组,在第一个数组上执行 foreach,如果键不为空,则在新数组上添加值...也许有一个 php 数组函数但不知道。你如何得到这个值?你可以有多个空键吗?
  • @Evgeniy Belov 我没有创建这个数组 - 这是我从外部来源获得的:/
  • 一个 php 数组不能有多个具有相同键的元素。只需一个unset()

标签: php arrays unset


【解决方案1】:

可能是键是''(空字符串)

在这种情况下,假设你有

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

然后尝试取消设置

 unset($myArray['']);

【讨论】:

    【解决方案2】:

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

    $array['']=2;
    

    所以您可以像平常一样简单地取消设置。像这样

    unset( $array['']);
    

    因为如果你定义一个单元格如下:

     $array[]=2;
    

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

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

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

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

    希望对你有帮助。

    【讨论】:

      【解决方案3】:
      if (($key = array_search(null', $array)) !== false) {
          unset($array[$key]);
      }
      

      我建议你阅读this thread

      【讨论】:

        【解决方案4】:

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

        $array = [
        44 => 2,
        21 => 2,
        '' => 2,
        27 => 2
        ];
        
        $results = [];
        
        foreach ($array as $k => $a) {
            if (!empty($k)) {
                $results[$k] = $a;
            }
        }
        
        var_dump($results);
        

        sandbox

        【讨论】:

          【解决方案5】:

          你可以试试这个:

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

          【讨论】:

            猜你喜欢
            • 2018-03-20
            • 2017-11-03
            • 2015-03-27
            • 2019-03-22
            • 2017-11-06
            • 2014-12-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多