2012-09-12 43 views
1

我得到了下面的數組,從MySQL查詢結果:查詢結果數組修改

Array 
(
    [0] => Array 
     (
      [id] => 11 
      [owner] => Mark 
     ) 

    [1] => Array 
     (
      [id] => 10 
      [owner] => David 
     ) 

    [2] => Array 
     (
      [id] => 9 
      [owner] => Poul 
     ) 

    [3] => Array 
     (
      [id] => 8 
      [owner] => Peter 
     ) 

    [4] => Array 
     (
      [id] => 7 
      [owner] => Peter 
     ) 

    [5] => Array 
     (
      [id] => 6 
      [owner] => Lucas 
     ) 

) 

是否有修改它的方式,使用PHP函數和ommit的foreach過程?

我想它看起來如下:

Array 
(
    11 => Mark 
    10 => David 
    9 => Poul 
    8 => Peter 
    7 => Peter 
    6 => Lucas 
) 

所以,basicly它應該建立在id這個陣列和owner值。像id => owner

這可能嗎?

+0

短期使用魔法的,我不可能看到。 –

+1

聽起來很完美!你會怎麼做,使用魔法? –

+1

魔術師從來沒有透露他的祕密:P –

回答

2

如果你使用的PDO,你可以做這樣的事情:

$stmt = $dbh->query("SELECT id, owner FROM table"); 
$arr = $stmt->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP); 

這應該給你一個數組,數組的索引是在結果第一列的值,即ID。

+0

不錯的解決方案!謝謝! :) – Sapp

0

如果你原來的數組是$arr然後將以下代碼會改變它,只要你想:

$tot = count($arr); 
for($i=0;$i<$tot;$i++) { 
    $key = $arr[$i]['id']; 
    $val = $arr[$i]['owner']; 
    unset($arr[$i]); 
    $arr[$key] = $val; 
}