2013-03-24 11 views
-1

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

$array = array (
    0 => 
    array (
     'date' => '2013-03-25', 
     'name' => 'Bob' 
    ), 
    1 => 
    array (
     'date' => '2013-03-25', 
     'name' => 'Brian' 
    ), 
    2 => 
    array (
     'date' => '2013-03-26', 
     'name' => 'Jack' 
    ), 
    3 => 
    array (
     'date' => '2013-03-26', 
     'name' => 'Bob' 
    ) 
); 

У меня есть цикл PHP, циклический через каждый день года (это работает отлично). В этом цикле я хотел бы проверить, есть ли какие-либо записи в массиве выше для рассматриваемой даты, и если да, для каждой найденной записи возвратите соответствующий ключ для «name». Я хочу запустить SQL-запрос для каждого возвращаемого имени, поэтому предположительно я создам еще один цикл для этих запросов.

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

+2

Покажите нам, что вы уже пробовали –

+0

@JohnConde у меня нет никакой полезной код, чтобы показать. Я попытался использовать функцию array_key_exists(), а функция, используемая [здесь] (http://stackoverflow.com/questions/6494907/search-a-multi-dimensional-array-for-certain-values), среди прочих, без успеха – Nick

ответ

2
$array2 = array(); 
foreach($array as $item) 
    $array2[$item['date']][] = $item['name']; 

Теперь, чтобы проверить, есть ли имена некоторые даты, вы просто проверить

if(isset($array2[$date])) 
# do something 
+0

Спасибо за этот ответ. Я попытался использовать его, и он возвращает все даты, найденные в массиве, а не имена, найденные для каждой из дат. Я не уверен, что здесь что-то не хватает. Не могли бы вы объяснить несколько шагов? – Nick

+0

Что вы будете использовать? $ array2 ['2013-03-25'] должен быть массивом ('Bob', 'Brian') –

+0

Спасибо, у меня есть это сейчас. Вместо использования 'if (isset ($ array2 [$ date])) Я использую' foreach ($ array2 [$ date] как $ name) ', а затем запускает запрос для каждого имени. Теперь у меня есть третий ключ в массиве под названием «время». Как проверить ключ «время» в цикле foreach? – Nick