PHP array_search konsekwentnie zwraca pierwszy klucz tablicy [duplikat]

To pytanie ma już odpowiedź tutaj:

PHP in_array () / array_search () dziwne zachowanie 2 odpowiedzi

Ostatnio zauważyłem problem podczas używania funkcji array_search w moim kodzie. Przeszukuję tablicę „$ allcraftatts” pod kątem wartości „sharp”. Próbowałem wyizolować problem, konfigurując dwuwierszowy eksperyment:

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

Używanie „print_r (get_defined_vars ());” później otrzymuję ten wynik:

[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

Upewniłem się, że nie zmienię tych zmiennych w żadnym innym momencie.

Teraz, jeśli zmienię kod na

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

zwraca „1”.

To prowadzi mnie do przekonania, że zawsze zwraca pierwszy klucz w tablicy.

To mnie zaskakuje! Jest to jeden z tych błędów, który powoduje, że boisz się czegoś złego w samym języku. Jakkolwiek wątpliwe jest to, tak naprawdę ostatecznie byłem zmuszony spojrzeć na źródło PHP w poszukiwaniu czegoś złego, ale niestety nie mogłem tego zrozumie

Widząc, że jest to taka prosta funkcja, z pewnością będę całkowicie upokorzony nieuchronnie prostą odpowiedzią, ale w tym momencie chcę tylko odpowiedź.

questionAnswers(3)

yourAnswerToTheQuestion