PHP array_search konsekwentnie zwraca pierwszy klucz tablicy [duplikat]
To pytanie ma już odpowiedź tutaj:
PHP in_array () / array_search () dziwne zachowanie 2 odpowiedziOstatnio 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ź.