来自php数组的值似乎不正确

时间:2016-08-21 13:03:59

标签: php arrays mongodb loops

我遇到问题,理解为什么我的数组包含3个元素必须分成2个部分。我希望访问一个我正在推入数组的数字,但它似乎打印出索引而不是我推入它的'key'值($ number)。

我有一个2d数组我正在将ID和整数推入,然后对其进行排序:

$array = [[]];
array_push($array, $doc[_id], $number);
array_multisort($array);

然后我过滤掉任何空元素:

$array = array_filter($array); //remove null elements

这一切都像id期望的那样,但是这个数组看起来像这样:

 unrated.array(5) 
 { 
 [2]=> object(MongoId)#32 (1) 
 { ["$id"]=> string(24) "57b99696ce2350100b000029" } 

 [3]=> object(MongoId)#31 (1) 
 { ["$id"]=> string(24) "57b998ccce2350181700002b" } 

 [4]=> object(MongoId)#33 (1) 
 { ["$id"]=> string(24) "57b99a84ce2350100b00002b" } 

 [5]=> int(2) [6]=> int(3) 

 }

同样,这很好,但这意味着当我使用下面的代码循环数组时,它似乎长于3个元素,因为我必须从0-6而不是0-3切片:

$array = array_slice($array, 0, 6, true); //only get 3 elements from array
foreach ($array as $key => $value) {
echo $key; //prints out values from 1-5 weirdly.... should just print the $number value
$id = $value->{'$id'};
}

我想要实现的是使用之前推送的最低可能值找到数组中的元素(array_push($ array,$ doc [_id],$ number);)然而,因为我无法理解为什么数组被分成6个而不是3个部分,这更令人困惑。

简短的问题:如何访问推入数组的$ number,为什么我的数组6只包含3个元素,看起来大小为6个。

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:2)

要明确,array_push只需将一个或多个推送到数组的末尾。 array_push的第一个参数是您希望将值推送到的数组,任何后续参数都是您希望推送的值列表。因此,您对array_push($array, $doc[_id], $number)所做的工作是将两个值($doc[_id]$number)推送到数组$array的末尾。 array_push只会在将这些值添加到数组时使用下一个可用索引作为键。 允许您指定密钥。这与执行$array[] = $value相同。

要指定键,您必须直接为数组键指定值,如下所示:$array[$key] = $value