2016-08-21 4 views
0

Ich habe ein Problem mit dem Verständnis, warum meine Array mit 3 Elementen in 2 Teile geschnitten werden muss. Ich möchte auf eine Zahl zugreifen, die ich in das Array schiebe, aber es scheint nur den Index auszudrucken und nicht den 'Schlüssel'-Wert, den ich hineingeschoben habe ($ number).Wert von PHP-Array scheint falsch

Ich habe ein 2D-Array I in eine ID und eine ganze Zahl bin schieben, und dann sortieren:

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

ich dann filtern alle leeren Elemente:

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

Dies alles funktioniert wie id erwartet jedoch das Array wie folgt von diesem Punkt aus:

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) 

} 

Auch dies ist in Ordnung, aber es bedeutet, wenn ich Schleife ove r das Array mit dem Code unten, damit er erscheint als 3 Elemente länger zu sein, als ich von 0-6 schneiden anstelle von 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'}; 
} 

Was ich zu erreichen bin versucht, das Element finden in dem Array mit dem geringstmöglichen Wert, der zuvor geschoben wurde (array_push ($ array, $ doc [_id], $ number);) aber, weil ich kann nicht verstehen, warum das Array in 6 statt 3 Teile aufgespalten wird seine noch verwirrende .

Frage in Kürze: Wie greife ich auf die in das Array geschobene $ -Nummer und warum ist mein Array 6 scheinbar 6 groß, wenn es nur 3 Elemente enthält.

Jede Hilfe würde geschätzt, danke.

+0

Was ist es, dass Sie 'array_push ($ array, $ doc [_id], $ number) expected' zu tun, um genau? Weil, was das tatsächlich tut, drückt ___two___ Werte auf das Ende des Arrays. Der Wert von '$ doc [_id]' und der Wert von '$ number'. Wenn Sie das 3 Mal tun, erklären Sie, warum Sie 6 Elemente im Array sehen. – Sherif

+0

Nun, ich brauche nur einen Weg, um sowohl auf die ID als auch auf die $ -Zahl in meiner Schleife zuzugreifen, also erwartete ich, die $ -Nummer auf das Array zu schieben und die ID und Sortierung würde dazu führen, dass das Array nach dem $ -Nummernwert sortiert wird. Aber das Hauptproblem, das ich gelöst haben muss, ist letztendlich, wie man auf den $ -Nummer-Wert von der Schleife als Sortierung usw. zugreifen kann. Ich kann mit mehr Forschung lösen, wenn es ein Problem damit gibt. – D3181

+1

Nun, Ihre Erwartungen sind dann falsch, weil sowohl '$ number' ___and___ 'id 'Werte im Array wären. Daher würde das Sortieren des Arrays das Sortieren von __both__ Werten bedeuten. Was Sie tun müssen, ist die "$ Nummer" direkt dem ID-Schlüssel zuweisen. – Sherif

Antwort

2

Um klar zu sein, schiebt array_push einfach einen oder mehrere Werte auf das Ende eines Arrays. Das erste Argument von array_push ist das Array, auf das Sie den Wert (die Werte) schieben möchten, und jedes nachfolgende Argument ist eine Liste von Werten, die Sie verschieben möchten. Also, was Sie mit array_push($array, $doc[_id], $number) tun, treibt zwei Werte ($doc[_id] und $number) bis zum Ende des Arrays $array. array_push verwendet nur den nächsten verfügbaren Index als Schlüssel, wenn er diese Werte zum Array hinzufügt. Es wird nicht können Sie einen Schlüssel angeben. Dies ist die gleiche Sache wie $array[] = $value zu tun.

Um einen Schlüssel geben Sie wie so einen Wert direkt auf dem Array-Schlüssel zuweisen müssen: $array[$key] = $value.

+0

Gibt es eine Möglichkeit, die ID in das Array zu schieben und gleichzeitig die $ -Nummer als Index des Arrays zu setzen? – D3181

+0

Ja, Sie geben nur die '$ Nummer' als Schlüssel an, was genau das Gegenteil von dem ist, was ich hier mache '$ array [$ id] = $ number' wird dann $ array [$ number] = $ id '. Beachten Sie, dass ein Array-Schlüssel in einem PHP-Array einzigartig ist. Daher können Sie nicht mehr als einen Schlüssel mit demselben Wert haben. Bitte lesen Sie das Handbuch für weitere Informationen zur Verwendung von Arrays (http://php.net/language.types.array). – Sherif

+0

Ehrfürchtig, vielen Dank, ich werde weiter darüber nachdenken! sehr hilfreich. – D3181

Verwandte Themen