2014-11-17 3 views
0

У меня есть ассоциативный массив, который создается с помощью запроса, используя следующий код:Поиск определенного значения в массиве ассоциативных

$query = ("SELECT `time_stamp`, `EAE` FROM `table`"); 
$stmt = $con->query($query); 
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
return $rows; 

Чтобы получить доступ к каждому значению Я обычно использую for петли, такие как:

for($i = 0 ; $i < count($rows) ; $i++) 
{ 
    echo $rows[$i]['time_stamp'].' '.$rows[$i]['EAE'].'<br>'; 
} 

Однако я хочу получить доступ к значению, зарегистрированному в определенный момент времени. Для этого у меня возникли проблемы с использованием функции array_search. Я пробовал настроить его следующим образом:

$sum_a = array_search(date('Y-m-d', $rows[$j]['time_stamp'])." 00:00:00", $rows); 

Но ничего не найдено. Я не могу найти способ использовать эту функцию с массивом двойной области. Вы, ребята, знаете, как я могу это использовать? Или, если есть другой способ, который не требует повторного доступа к базе данных или выполнения цикла во всем массиве?

PS: Я также пытался определить значение с помощью in_array, но ничего не нашел.

+1

почему бы не добавить где положение о запросе вместо – Ghost

+0

моем случае это не поможет, потому что я делаю петлю, чтобы покрыть все значения, и во время этого цикла мне нужно получить доступ к определенному предыдущему значению. Это довольно запутанно, и единственный ответ, который я могу придумать, - это перезагрузить db. – Comum

+3

, тогда просто сделайте это, проверяя в то время как внутри цикла. в любом случае, вы не можете использовать поиск массива на многомерном, его предполагается работать на плоском. – Ghost

ответ

2

$rows в вашем случае будет многомерным массивом. array_search Петли только в первом измерении - вот почему ваш код не работает.

Вы можете получить значения указанного столбца, используя.

$column = array_map(function($element){return $element['time_stamp'];}, $rows); 

Для PHP 5.5+ вы можете использовать array_column.

И тогда вы можете использовать собственный код

$sum_a = array_search(date('Y-m-d', $rows[$j]['time_stamp'])." 00:00:00", $column); 
+0

Это человек следующего уровня поиска. Благодаря!!! – Comum

Смежные вопросы