Проблема в поиске по массиву - PullRequest
5 голосов
/ 01 февраля 2010

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

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

Ответы [ 2 ]

14 голосов
/ 01 февраля 2010

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(...)) { ... }
2 голосов
/ 01 февраля 2010

См. Руководство, оно может помочь вам: 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...