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 что-то не то, но, к сожалению, не мог этого понят
Видя, что это простая функция, я наверняка буду полностью унижен неизбежно простым ответом, но сейчас я просто хочу получить ответ.