2013-03-24 85 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

讓我們看看你已經嘗試什麼 – 2013-03-24 21:32:55

+0

@JohnConde我沒有任何有用的代碼來顯示。我曾嘗試使用array_key_exists()函數,並使用[此處](http://stackoverflow.com/questions/6494907/search-a-multi-dimensional-array-for-certain-values)等功能,沒有成功 – Nick 2013-03-24 21:36:44

回答

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

現在檢查是否有一些日期的名字,你只需要檢查

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

感謝您的回答。我嘗試過使用它,它將返回數組中找到的所有日期,而不是爲每個日期找到的名稱。我不確定我是否在這裏失去了一些東西。你能解釋一下更多的步驟嗎? – Nick 2013-03-24 21:47:55

+0

你如何使用它? $ array2 ['2013-03-25']應該是數組('Bob','Brian') – 2013-03-24 21:50:17

+0

謝謝,我現在有這個工作。而不是使用'if(isset($ array2 [$ date]))'我使用foreach($ array2 [$ date]作爲$ name)'然後對每個名稱運行查詢。我現在在數組中有一個叫做'time'的第三個鍵。我如何檢查foreach循環中的'時間'鍵? – Nick 2013-03-26 21:56:27