PHP array_search последовательно возвращает первый ключ массива [duplicate]

На этот вопрос уже есть ответ:

PHP in_array () / array_search () странное поведение 2 ответа

Я недавно заметил проблемы при использовании функции array_search в моем коде. Я ищу в массиве "$ allcraftatts" значение "sharp". Я попытался изолировать проблему, настроив двухстрочный эксперимент:

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

Использование "print_r (get_defined_vars ());" позже я получаю такой результат:

[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

Я позаботился о том, чтобы не изменять эти переменные в любое другое время.

Теперь, если я поменяю код на

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

возвращает «1».

Это заставляет меня поверить, что он всегда возвращает первый ключ в массиве.

Это сбивает меня с толку! Это одна из тех ошибок, которая заставляет вас бояться чего-то не так с самим языком. Как бы сомнительно это ни было, на самом деле я был в конечном итоге вынужден искать в источнике PHP что-то не то, но, к сожалению, не мог этого понят

Видя, что это простая функция, я наверняка буду полностью унижен неизбежно простым ответом, но сейчас я просто хочу получить ответ.

Ответы на вопрос(3)

Ваш ответ на вопрос