У меня есть результаты mysql ($date_options
), как показано ниже
Array (
[0] => stdClass Object (
[id] => 4
[start_date] => 2010-09-29
)
[1] => stdClass Object (
[id] => 13
[start_date] => 2010-10-06
)
)
Мне нужно иметь возможность искать в поле "id", если какое-то значение существует. Я пробовал это, и он не работал:
array_search($event_id, $date_options, true)
$event_id
имеет значение id. Я только хочу посмотреть в id, а не в start_date
Как это решить?
Спасибо
Поскольку вы уже используете MySQL, почему бы вам не выбрать только ID, который вас интересует? Это было бы более эффективно, чем извлечение всех записей, а затем поиск в PHP.
Если вы все еще хотите это сделать, вы можете просто перебрать массив и проверить вручную:
foreach ($date_options as $result) {
if ($result->id == $event_id) {
// do something
}
}
Все ответы являются точными, но ради расширения, здесь функция, которая "повторно используется", и она будет искать рекурсивно через даже более глубокие массивы, с возможностью указания как ключа, так и его значения. Он будет останавливаться в первом совпадении и возвращать его значение, но опять же, ради расширения, его можно было бы легко модифицировать, чтобы возвращать массив совпадающих пар ключ/значение, если ожидаются несколько результатов.
function search_my_array($my_key, $my_value, $array) {
foreach($array as $key => $value) {
if(!is_array($value)) {
if(($key == $my_key) && ($value == $my_value)) {
return $value;
}
} else {
if(($result = search_my_array($my_key, $my_value, $value)) !== false) {
return $result;
}
}
}
return false;
}
Итак, в вашем случае вы будете использовать его как:
$event = search_my_array('id', $event_id, $date_options);
Я бы предположил, однако, что вы идете на одно из гораздо более простых решений, если вам нужна только функция поиска для этой конкретной задачи, но, возможно, кто-то найдет это полезным в какой-то момент.
Попробуйте следующее:
function searchEventForId($eventId, $dateOptions){
foreach($dateOptions as $event){
if($event->id === $eventId){
return $event;
}
}
return null;
}
$event = searchEventForId($event_id, $date_options);