PHP array_search retorna consistentemente a primeira chave da matriz [duplicada]

Esta pergunta já tem uma resposta aqui:

PHP in_array () / array_search () comportamento estranho 2 respostas

Eu notei recentemente problemas ao usar a função array_search no meu código. Estou pesquisando a matriz "$ allcraftatts" pelo valor "sharp". Tentei isolar o problema configurando um experimento de duas linhas:

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

Usando "print_r (get_defined_vars ());" mais tarde, recebo 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

Certifiquei-me de não modificar essas variáveis em nenhum outro moment

Agora, se eu mudar meu código para

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

it retorna "1".

Isso me leva a acreditar que sempre retorna a primeira chave na matri

It me confunde! Esse é um daqueles erros que fazem você temer algo errado com o próprio idioma. Por mais duvidoso que isso seja, eu acabei levando a procurar na fonte PHP algo errado lá, mas infelizmente não consegui entende

Vendo que é uma função simples como essa, eu definitivamente ficarei completamente humilhado com a resposta inevitavelmente simples, mas, neste momento, eu só quero uma respost

questionAnswers(3)

yourAnswerToTheQuestion