【问题标题】:How can i remove empty array from multidimenssional array?如何从多维数组中删除空数组?
【发布时间】:2016-04-25 04:56:10
【问题描述】:

我有一个数组,其中存在多个子数组。我想删除那些具体值为空的数组。

Array ( 
[9] => Array ( [address_id] => 9 [firstname] => [lastname] =>  ) 
[10] => Array ( [address_id] => 10 [firstname] => the [lastname] => king  ) 
[11] => Array ( [address_id] => 11 [firstname] => the [lastname] => queen  ) 
)

您可以看到firstnamelastname[9] => Array() 中为空。那么我怎样才能删除那些firstname 有空白的数组呢?我试过 array_filter() 但没有解决我的问题。

【问题讨论】:

标签: php arrays


【解决方案1】:

用匿名函数试试array_filter()

$array = array_filter($array, function($v) { return !empty($v['firstname']); });

对于名字和姓氏:

$array = array_filter($array,
                      function($v) {
                        return !empty($v['firstname']) && !empty($v['lastname']);
                      });

请记住,empty() 也是 0falsenull,因此对于空字符串,您可能需要 return $v['firstname'] !== ''; 或类似名称。

【讨论】:

  • lastname 呢?
  • 我不知道 OP 说 “那么我怎样才能删除那些 firstname 有空白的数组?”
【解决方案2】:

从嵌套数组中删除所有不包含值的键,然后删除所有空的嵌套数组。

$postArr = array_map('array_filter', $postArr);
$postArr = array_filter( $postArr );

【讨论】:

    【解决方案3】:

    假设父数组名为$parent,您希望循环并有条件地检查两个空字段,然后取消设置匹配的索引。

    foreach ($parent as $key -> $value){
        if ($value['lastname'] == "" AND $value['firstname'] == ""){
            // Names not set, remove from parent array
            unset($parent[$key]);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多