Я пытаюсь найти строку в массиве, а затем вернуть индекс и проверить этот индекс в другом массиве, чтобы увидеть, совпадает ли он (я ищу открытые времена и совпадение совпадений в массивах соответственно).Найти индекс элемента в массиве в PHP
Строка может появляться более одного раза в $openList
, и она не должна останавливать проверку, пока не найдет пару совпадающих времен как в $openList
, так и в $closeList
. array_search
находит только первое событие, поэтому мне трудно создать цикл, который работает и эффективен (я буду запускать это несколько раз с разными значениями поиска).
До сих пор, у меня есть что-то вроде:
$openList = array("10:00", "9:00", "10:15", "9:00", "2:30");
$closeList = array("2:15", "5:30", "10:30", "10:00", "3:00");
$found_key = false;
while (($key = array_search("9:00", $openList)) !== NULL) {
if ($closeList[$key] == "10:00") {
$found_key = true;
echo "found it at position ".$key;
break;
}
}
if (!$found_key) echo "time doesn't exist";
Как я могу это исправить эффективным образом?
вы должны смотреть на '' array_key_exists' –
array_key_exists' ищет ключи, а не содержание самого массива. Я ищу что-то, что ищет массив и возвращает позицию, в которой он находится. 'array_keys', как предлагает @David Nguyen, - лучшая функция. – CMH