Я пытаюсь найти значения в массиве. Этот массив всегда запускается с 0. к сожалению, array_search начинают искать с элементом массива 1. Таким образом, первый элемент всегда пропускается.
Как я мог "сместить" этот массив, чтобы запуститься с 1 или сделать поисковый массивом запуск с 0? Массив выходит из веб-сервиса XML, таким образом, я не могу сплотиться, изменяют результаты.
Смотрите руководство, это может помочь вам: http://www.php.net/manual/en/function.array-search.php
Если вы пытаетесь сделать, это использовать увеличить ключ одним, вы можете сделать:
function my_array_search($needle, $haystack, $strict=false) {
$key = array_search($needle, $haystack, $strict);
if (is_integer($key)) $key++;
return $key;
}
my_array_search($xml_service_array);
array_search
не не начинает поиск по индексу 1. Попробуйте этот пример:
<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('blue', $array); // $key = 0
?>
Независимо от проблемы с вашим кодом , дело не в том, что первым элементом является индекс 0.
Более вероятно, что вы используете ==
вместо ===
для проверки возвращаемого значения. Если array_search возвращает 0, указывая на первый элемент, следующий код не будет работать:
// doesn't work when element 0 is matched!
if (false == array_search(...)) { ... }
Вместо этого вы должны проверить с помощью ===
, который сравнивает значение и тип
// works, even when element 0 is matched
if (false === array_search(...)) { ... }