2011-09-30 42 views
0

比方說,我有如下表在我的數據庫:真正簡單的PHP數組鍵值問題

Name  | Description  | Image 

App   | Some description | somefile.png 
Another App | Another descript | anotherfile.png 

我想要做的就是創建一個JSON數組是這樣的:

{ 
    "App": { 
     "name": "App", 
     "description": "Some description", 
     "Image": "somefile.png" 
    }, 
    "Another App": { 
     "name": "Another App", 
     "description": "Another descript", 
     "Image": "anotherfile.png" 
    } 
} 

什麼我在努力推動關鍵>價值對。我可以使用非鍵控數組推送值,但是我無法將鍵>值對推到我的數組上。

我已經試過:

$res = mysql_query('SELECT * FROM `apps`;'); 
if ($res) { 
    $temp = array(); 
    while ($row = mysql_fetch_array($res)) { 
     $name = $row['name']; 
     $descript = $row['description']; 
     $img = $row['image']; 
     $new = array('name'=>$name,'description'=>$descript,'img'=>$img); 
     array_push($temp,$new); // how do I make this push with a key? 
    } 
} 
echo json_encode($temp); 

我的問題是與array_push()函數 - 我希望它推的名稱爲關鍵,但我不能得到它。

+1

'array_push()'將創建一個堆棧,而不是一個關聯數組,這意味着它是不是你想要的。只需使用鍵控值並將其設置爲鍵控/關聯數組。 –

+0

這已經在這裏得到解答http://stackoverflow.com/questions/2121548/how-to-push-both-value-and-key-into-array-with-php – Mark

+0

@Mark抱歉 - 我看過,但沒有' t找到那個帖子 –

回答

2

試試這個:

while ($row = mysql_fetch_array($res)) { 
    $name  = $row['name']; 
    $descript = $row['description']; 
    $img  = $row['image']; 

    $temp[$name] = array('name'=>$name,'description'=>$descript,'img'=>$img); 
} 
+0

非常感謝 - 我不敢相信我沒有想到這一點! –