首页 > 解决方案 > PHP - 检查任何嵌套数组是否不为空

问题描述

如果我有如下嵌套数组,如何检查是否有任何dates数组不为空?

$myArray =  [ 
    '1' =>  [ 'dates' => []],

    '2' =>  [ 'dates' => []],

    '3' =>  [ 'dates' => []],

    ...      
 ]

我知道我可以通过执行 foreach 循环来检查:

$datesAreEmpty = true;
foreach($myArray as $item) {

  if (!empty($item['dates'])) {
      $datesAreEmpty = false;
  }
}

有没有更优雅的方法来做到这一点?

标签: phparrays

解决方案


可以使用 array_filter 迭代完成:

// This will be empty if all array elements are empty.
$filtered = array_filter($myArray, '_filter_empty');

/**
 * Recursively remove empty elements from array.
 */
function _filter_empty($element) {
  if (!is_array($element)) {
    return !empty($element);
  }
  return array_filter($element, '_filter_empty');
}

推荐阅读