我最近在数组上执行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