价值似乎不正确

问题描述:

我有理解为什么我的含有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个元素时。

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

+0

它是什么,你希望'array_push($阵列,$ DOC [_id],$号)'做,到底是什么?因为实际做的是将___two___值推到数组的末尾。 '$ doc [_id]'的值和'$ number'的值。如果你这样做了3次,就能解释为什么你会看到阵列中的6个元素。 – Sherif

+0

嗯,我只需要一种方法来访问我的循环中的ID和$数字,所以我期望将$数字推到数组和ID并对它进行排序将导致数组按$数值排序。但最终我需要解决的主要问题是如何从循环访问$ number值作为排序等,如果存在问题,我可以通过更多的研究来解决。 – D3181

+1

那么,你的期望是错误的,因为'$ number' ___和''id'都是数组中的值。这样排序数组意味着对__both__值进行排序。你需要做的是将'$ number'直接分配给id键。 – Sherif

要清楚,array_push只需将一个或多个推到数组的末尾。 array_push的第一个参数是您希望将值推送到的数组,并且任何后续参数都是您希望推送的值的列表。那么,什么你和array_push($array, $doc[_id], $number)做的是推动值($doc[_id]$number)到阵列$array结束。 array_push只会在将这些值添加到数组时将下一个可用索引用作关键字。它会而不是允许你指定一个密钥。这与做$array[] = $value是一回事。

要指定必须是直接分配一个值数组键像这样的关键:$array[$key] = $value

+0

有没有办法将ID推送到数组并将$数字同时设置为数组的索引? – D3181

+0

是的,你只需要指定'$ number'作为键,这与我在这里做的完全相反'$ array [$ id] = $ number'然后变成'$ array [$ number] = $ id '。请记住,数组键在PHP数组中是唯一的。因此,您不能有多个具有相同值的键。请确保[阅读手册以获取有关使用数组的更多详细信息](http://php.net/language.types.array)。 – Sherif

+0

真棒,非常感谢,我会进一步研究这个!很有帮助。 – D3181