价值似乎不正确
问题描述:
我有理解为什么我的含有3个元素阵列必须被切成每2个部分的问题。我希望访问一个我只向数组中推入的数字,但它似乎打印出索引而不是我推入它的“键”值($ number)。价值似乎不正确
我有一个二维数组我推一个ID和一个整数进去,然后对它进行排序:
$array = [[]];
array_push($array, $doc[_id], $number);
array_multisort($array);
我然后过滤任何空元素:
$array = array_filter($array); //remove null elements
这所有作品然而,预计阵列看起来像这样:
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)
}
再次,这是好的,但它意味着当我循环ove [R使用下面的代码似乎长于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($阵列,$ DOC [_id],$数))的最低可能值阵列中但是因为我不能明白为什么阵列被分成6而不是3份其更加混乱。
问题简而言之:如何访问推入阵列的$数字,以及为什么我的数组6看起来只有6个大小,当它只包含3个元素时。
任何帮助,将不胜感激,谢谢。
答
要清楚,array_push
只需将一个或多个值推到数组的末尾。 array_push
的第一个参数是您希望将值推送到的数组,并且任何后续参数都是您希望推送的值的列表。那么,什么你和array_push($array, $doc[_id], $number)
做的是推动值($doc[_id]
和$number
)到阵列$array
结束。 array_push
只会在将这些值添加到数组时将下一个可用索引用作关键字。它会而不是允许你指定一个密钥。这与做$array[] = $value
是一回事。
要指定必须是直接分配一个值数组键像这样的关键:$array[$key] = $value
。
它是什么,你希望'array_push($阵列,$ DOC [_id],$号)'做,到底是什么?因为实际做的是将___two___值推到数组的末尾。 '$ doc [_id]'的值和'$ number'的值。如果你这样做了3次,就能解释为什么你会看到阵列中的6个元素。 – Sherif
嗯,我只需要一种方法来访问我的循环中的ID和$数字,所以我期望将$数字推到数组和ID并对它进行排序将导致数组按$数值排序。但最终我需要解决的主要问题是如何从循环访问$ number值作为排序等,如果存在问题,我可以通过更多的研究来解决。 – D3181
那么,你的期望是错误的,因为'$ number' ___和''id'都是数组中的值。这样排序数组意味着对__both__值进行排序。你需要做的是将'$ number'直接分配给id键。 – Sherif