2014-11-17 110 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>'; 
} 

但是,我想要訪問在特定的time_stamp中註冊的值。爲此,我無法使用功能array_search。我試過這樣設置:

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

但它沒有找到任何東西。我無法找到一個方法來使用這個函數與雙重範圍數組。你們知道我可以如何使用它嗎?或者,如果有另一種方式不涉及再次訪問數據庫或在整個陣列上運行循環?

PS:我也嘗試使用in_array來檢測一個值,但它沒有找到任何東西。

+1

爲什麼不能在查詢,而不是 – Ghost

+0

對於我來說,這並不能幫助增加where子句,因爲我在做一個循環覆蓋所有的值,在此循環中,我需要訪問特定的以前的值。這很令人困惑,我能想到的唯一答案就是重新訪問數據庫。 – Comum

+3

然後只是在循環內進行檢查。無論如何,你不能在多維上使用數組搜索,它假設在一個平面上工作。 – Ghost

回答

2

$rows在你的情況下將是多維數組。 array_search只循環第一維 - 這就是爲什麼你的代碼不工作。

您可以使用獲取指定列的值。您可以使用array_column

然後你就可以使用自己的代碼

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

這是一些下一級搜索的人。謝謝!!! – Comum