2013-04-30 134 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