PHP:仅使用1个键删除嵌套数组

时间:2017-07-14 10:05:10

标签: php arrays loops

我有以下数组: -

array(3) {
  [1]=>
  array(1) {
    ["A"]=>
    float(5)
  }
  [2]=>
  array(2) {
    ["A"]=>
    float(1)
    ["B"]=>
    float(3)
  }
  [3]=>
  array(2) {
    ["A"]=>
    float(5)
    ["B"]=>
    float(6)
  }
}

我想删除/过滤出只存储1个密钥的嵌套数组,所以它最终会像这样: -

array(2) {
  [2]=>
  array(2) {
    ["A"]=>
    float(1)
    ["B"]=>
    float(3)
  }
  [3]=>
  array(2) {
    ["A"]=>
    float(5)
    ["B"]=>
    float(6)
  }
}

有一个简单的解决方案/方法吗?

2 个答案:

答案 0 :(得分:3)

使用简单的foreach(): -

foreach($array as $key=>$arr){
   if(count($arr) == 1){
      unset($array[$key]);
   }
}

print_r($array);

输出: - https://eval.in/832446

或使用array_filter: -

$newarray = array_filter($array, function($var) {
    return (count($var) !=1);
});

输出: - https://eval.in/832451

答案 1 :(得分:1)

我能想到的最简单的方法是使用PHP的计数函数。

让我们假设您已定义的数组,并将其称为$ originalArray -

array(3) {
  [1]=>
  array(1) {
    ["A"]=>
    float(5)
  }
  [2]=>
  array(2) {
    ["A"]=>
    float(1)
    ["B"]=>
    float(3)
  }
  [3]=>
  array(2) {
    ["A"]=>
    float(5)
    ["B"]=>
    float(6)
  }
}

现在我们将遍历整个数组以查找具有多个键的索引并将它们推送到不同的数组。

$new_array = array();

for($i=0;$i<count($originalArray);$i++)
{
   if(count($originalArray[$i])>1)
   {
     array_push($new_array,$originalArray[$i]);
   }
}