PHP没有在数组过滤器之后从数组中打印MongoID


PHP not printing MongoID from array after array filter

我最近在数组上执行array_filter后从数组打印我的mongoID时遇到了一些问题:

  $array = array_filter($array);
  $array = array_slice($array, 0, 3, true); 

这在没有array_filter的情况下是很好的,现在数组包含:

Array ( [3] => MongoId Object ( [$id] => 57b0facace2350981c000029 ) [4] => MongoId Object ( [$id] => 57b0fafcce2350981c00002b ) )

但是,现在打印ID失败或不循环:

  $length = count($array);
  for ($i = 0; $i < $length; $i++) {
  $id = $array[$i]->{'$id'};
  echo $id;
  }

再次,这一切都用来工作,但过滤后删除null元素,但它现在似乎不能迭代数组正确,但这可能是另一个问题。

错误的原因是在使用array_filter删除空元素后,由于array_slice保留了数组中的键。这意味着使用数组长度来迭代它不起作用,而是需要一个foreach循环来确保它将迭代数组中的所有元素:

foreach ($array as &$value)
{
}

感谢@Rizier123