2013-04-30 226 views
1

我有一個查詢從MySQL數據庫中獲取兩個用戶。我正在使用PDO。PHP關聯多維數組

這是返回數組,使用fetchAll(PDO::FETCH_ASSOC)

array(2) { 
    [0]=> 
    array(8) { 
    ["user_id"]=> 
    string(1) "4" 
    ["last_activity"]=> 
    string(10) "1367361208" 
    ["status"]=> 
    string(1) "1" 
    ["username"]=> 
    string(4) "WiS3" 
    ["gender"]=> 
    string(1) "1" 
    ["a_last_update"]=> 
    string(10) "1365785841" 
    ["user_level"]=> 
    string(1) "6" 
    ["level_color"]=> 
    string(6) "FC0000" 
    } 
    [1]=> 
    array(8) { 
    ["user_id"]=> 
    string(2) "19" 
    ["last_activity"]=> 
    string(10) "1367359866" 
    ["status"]=> 
    string(1) "2" 
    ["username"]=> 
    string(5) "Admin" 
    ["gender"]=> 
    string(1) "1" 
    ["a_last_update"]=> 
    string(10) "1366690422" 
    ["user_level"]=> 
    string(1) "7" 
    ["level_color"]=> 
    string(6) "008AFF" 
    } 
} 

由於排陣是數字,要充分利用數據,我必須做的$row[0][field]$row[1][field]

但我想它關聯使用是user_id,所以我可以做$row[user_id][field]

這是可能的嗎?我該怎麼做?

回答

2

對不起,沒有內置的。你必須自行使用PDOStatement::fetch()和填充陣列:

$result = array(); 
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    // note that $row['user_id'] will currently a string 
    // if you need integers as indexes then use intval($row['user_id']); 
    $result[$row['user_id']] = $row; 
} 

// dump all records 
var_dump($result); 

// dump username of user with uid = 4 
var_dump($result['4']['username']); 
+0

我這樣做,但我得到的數組裏面雙重價值。一個帶有一個關聯鍵,另一個帶有一個數字鍵,用於每個字段。 – Fr0z3n 2013-04-30 22:53:26

+0

檢查我的更新。我正在'PDO :: fectch()'中強制「PDO :: FETCH_ASSOC」。這應該符合您的需求 – hek2mgl 2013-04-30 22:56:08

+0

謝謝,這是完美的! – Fr0z3n 2013-04-30 22:59:26

0

這已經是一個關聯數組,包含幾個不同的記錄。

使用foreach分別獲得每一條記錄:

foreach($rows as $id => $row) 
{ 
    echo "Record n°" . $id . ": " . $row['user_id'] . "<br>"; 
} 
+0

我不能那樣做,因爲我正在做的腳本已經有了foreach。在這個foreach中,我有一個變量,那就是用戶ID,它在兩個值之間交換。這就是爲什麼我需要擁有這個數組,所以我可以根據user_id獲取不同的數據。 – Fr0z3n 2013-04-30 22:48:45