PHP:循环内的array_filter返回具有不同索引的数组

时间:2019-05-08 09:52:26

标签: php array-filter

我有这个代码:

$array = [0, 1, 2];
for($i = 0; $i <= 2; $i++){
   $filtered = array_filter($array, function($elem) use ($i){
      return ($elem == $i);
   });
   var_dump($filtered);
}

结果如下:

array (size=1)
  0 => 0
array (size=1)
  1 => 1
array (size=1)
  2 => 2

我的问题是为什么我得到$filtered结果的不同索引?!!
结果应该是这样的:

array (size=1)
   0 => 0
array (size=1)
   0 => 1
array (size=1)
   0 => 2

1 个答案:

答案 0 :(得分:-1)

只需用array_filter()包装array_values()。让我们这样尝试吧-

<?php
$array = [0, 1, 2];
for($i = 0; $i <= 2; $i++){
   $filtered = array_values(array_filter($array, function($elem) use ($i){
      return ($elem == $i);
   }));
   var_dump($filtered);
}

演示: https://3v4l.org/X1iSF