PHP array_search gibt konsistent den ersten Schlüssel des Arrays [duplicate] @ zurü

Diese Frage hat hier bereits eine Antwort:

PHP in_array () / array_search () seltsames Verhalten 2 Antworten

Ich habe kürzlich Probleme bei der Verwendung der Funktion array_search in meinem Code festgestellt. Ich suche im Array "$ allcraftatts" nach dem Wert "sharp". Ich habe versucht, das Problem einzugrenzen, indem ich ein zweizeiliges Experiment durchgeführt habe:

$testcopy=$allcraftatts;
$testsharp=array_search("sharp", $testcopy);

Using "print_r (get_defined_vars ());" später bekomme ich folgendes Ergebnis:

[testcopy] => Array
                (
                    [0] => 0
                    [1] => 0
             ,       [2] => 0
                    [3] => 0
                    [4] => 0
                    [5] => 0
                    [6] => Sharp Stone
                    [7] => Sharp Stones
                    [8] => stone
                    [9] => object
                    [10] => sharp
                    [11] => hard
                    [12] => 0
                    [13] => 0
                    [14] => 0
                    [15] => 0
                    [16] => 0
                    [17] => 0
                    [18] => 0
                )

[testsharp] => 0

Ich habe darauf geachtet, dass ich diese Variablen zu keinem anderen Zeitpunkt ändere.

Now, wenn ich meinen Code in @ ände

$testcopy=$allcraftatts;
unset($testcopy[0]);
$testsharp=array_search("sharp", $testcopy);

it gibt "1" zurück.

Dies lässt mich glauben, dass immer der erste Schlüssel im Array zurückgegeben wird.

It verblüfft mich! Dies ist einer dieser Fehler, der Sie befürchten lässt, dass etwas mit der Sprache selbst nicht stimmt. So zweifelhaft das auch ist, ich war tatsächlich irgendwann gezwungen, in der PHP-Quelle nach einem Fehler zu suchen, konnte ihn aber leider nicht verstehen.

Sehe ich davon aus, dass es sich um eine so einfache Funktion handelt, werde ich mit Sicherheit von der unvermeidlich einfachen Antwort völlig gedemütigt sein, aber an dieser Stelle möchte ich nur eine Antwort.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage