我有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
如何解决这个问题?
由于
答案 0 :(得分:6)
由于您已经在使用MySQL,为什么不选择您感兴趣的ID?这比检索所有记录然后用PHP搜索更有效。
如果你仍然想这样做,你可以简单地迭代数组并手动检查:
foreach ($date_options as $result) {
if ($result->id == $event_id) {
// do something
}
}
答案 1 :(得分:0)
试试这个:
function searchEventForId($eventId, $dateOptions){
foreach($dateOptions as $event){
if($event->id === $eventId){
return $event;
}
}
return null;
}
$event = searchEventForId($event_id, $date_options);
答案 2 :(得分:0)
所有答案都是定点,但为了扩展性,这里有一个“可重用”的功能,它将通过更深的数组递归搜索,并可以指定键及其值。它将在第一个匹配时停止并返回其值,但同样,为了可扩展性,可以很容易地修改它以返回匹配的键/值对的数组,以防多个结果被预期。
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);
我建议你选择一个更简单的解决方案,如果你只需要这个特定任务的搜索功能,但也许有人会发现这在某些方面很有用。
答案 3 :(得分:0)
这是经过测试的,您可以尝试,我已经在我的一个项目中使用过
function FindData($fKey, $find_val, $res) {
$arr = $res;//json_decode($res, true);
foreach ($arr as $key => $value) {
if ($value[$fKey] == $find_val) {
return $value;
}
}
}
示例:
$row = FindData('KeyName', 'Value', 'ArrayData or mySql Result Set');
它不会每次都访问MySQL数据库以获取普通数据。