【问题标题】:Can't remove empty keys from multidimensional array无法从多维数组中删除空键
【发布时间】:2018-07-23 13:13:46
【问题描述】:

我正在尝试使用 array_filter 函数从数组中删除数组元素。它工作正常,但总是有一个元素没有被删除。

array_combine 使用一个简单的数组构建数组,另一个使用 array_chunk 构建。

这是我的代码:

$arr_a = array("AAA","","CCC","");

$arr_b = array("a1","b1","a2","b2","a3","b3","a4","b4");

$arr_c = array_chunk($arr_b,2);

$c = array_combine($arr_a,$arr_c);

$limpn_url = array_filter($c);

如果我遇到错误,我不会费心在这里发布问题。但是返回没有错误。

制作时print_r($limpn_url); 输出是: Array ( [AAA] => Array ( [0] => a1 [1] => b1 ) [] => Array ( [0] => a4 [1] => b4 ) [CCC] => Array ( [0] => a3 [1] => b3 ) )

*注意[] => Array ( [0] => a4 [1] => b4 ) 不应该在那里。其他空元素已正确删除...

【问题讨论】:

标签: php arrays


【解决方案1】:

您可以使用一些数组函数来删除空键。

$arr_a = array("AAA","","CCC","");

$arr_b = array("a1","b1","a2","b2","a3","b3","a4","b4");

$arr_c = array_chunk($arr_b,2);

$c = array_combine($arr_a,$arr_c);

$limp= array_filter($c);

$filteredkeys = array_filter(array_keys($limp)); // here i remove the "" key

$filtered = array_intersect_key($limp, array_flip($filteredkeys)); // since $filterdkeys is values i need to flip it and intersect with $limp
var_dump($filtered);

输出:

array(2) {
  ["AAA"]=>
  array(2) {
    [0]=>
    string(2) "a1"
    [1]=>
    string(2) "b1"
  }
  ["CCC"]=>
  array(2) {
    [0]=>
    string(2) "a3"
    [1]=>
    string(2) "b3"
  }
}

https://3v4l.org/miNeW

【讨论】:

  • @SebasRossi 如果它按您的预期工作,请随时接受答案
  • 对不起,我是新来的……我是怎么做到的?
  • 没问题。单击您找到的最佳答案左侧的勾号。您可以阅读堆栈溢出教程,它将向您展示堆栈溢出如何工作的一些基础知识。 stackoverflow.com/tour
猜你喜欢
  • 2013-11-05
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
相关资源
最近更新 更多