2011-09-30 3 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 sorry - Я действительно выглядел, но didn ' 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

большое спасибо - я не могу поверить, что я не думал об этом! –

Смежные вопросы