Проблема в поиске массива

Я пытаюсь найти значения в массиве. Этот массив всегда запускается с 0. к сожалению, array_search начинают искать с элементом массива 1. Таким образом, первый элемент всегда пропускается.

Как я мог "сместить" этот массив, чтобы запуститься с 1 или сделать поисковый массивом запуск с 0? Массив выходит из веб-сервиса XML, таким образом, я не могу сплотиться, изменяют результаты.

5
задан Jon Seigel 1 February 2010 в 21:07
поделиться

2 ответа

Смотрите руководство, это может помочь вам: 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);
2
ответ дан 18 December 2019 в 10:44
поделиться

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(...)) { ... }
14
ответ дан 18 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: