PHP array_search devuelve constantemente la primera clave de la matriz [duplicado]

Esta pregunta ya tiene una respuesta aquí:

PHP in_array () / array_search () comportamiento extraño 2 respuestas

Recientemente noté problemas al usar la función array_search en mi código. Estoy buscando en la matriz "$ allcraftatts" el valor "sharp". Traté de aislar el problema configurando un experimento de dos líneas:

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

Utilizando "print_r (get_defined_vars ());" más tarde, obtengo este resultado:

[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

Me aseguré de no modificar estas variables en ningún otro momento.

Ahora, si cambio mi código a

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

it devuelve "1".

Esto me lleva a creer que siempre devuelve la primera clave de la matriz.

Me desconcierta! Este es uno de esos errores que te hace temer algo mal con el lenguaje en sí. Por dudoso que sea esto, en realidad finalmente me vi obligado a buscar en la fuente PHP algo mal allí, pero desafortunadamente no pude entenderlo.

l ver que es una función tan simple como esta, definitivamente me sentiré completamente humillado por la respuesta inevitablemente simple, pero en este punto, solo quiero una respuesta.

Respuestas a la pregunta(3)

Su respuesta a la pregunta