Результаты Mysql в массив (PHP)

Как я могу преобразовать результаты mysql (из mysql_fetch_array) в такую ​​форму?

$some = array( "comments" => array( array( "text" => "hi", "id" => "1" ), array( "text" => "hi", "id" => "2" ), array( "text" => "hi", "id" => "3" ), array( "text" => "hi", "id" => "4" ) ) ); 

в то время как db выглядит так:

Комментарии

 id text 1 blabla bla 2 bla bla 

Я попытался получить значения с помощью foreach / while и вставить его в два массива, но не успел …

 $some = array( "comments" => array() ); $q = $mysql->sf('*', TBL_QST); foreach($mysql->fetch($q) as $row) { $some[] = $row; // $some["comments"][] = $row; } 

Моя print_r дает:

 Array ( [comments] => Array ( [0] => Array ( [text] => lorem ipsum [id] => 0 ) [1] => Array ( [text] => lorem ipsum [id] => 1 ) [2] => Array ( [text] => lorem ipsum [id] => 2 ) ) ) 

И php, который я сделал для него:

 $comments = array( 'comments' => array() ); /* To simualate the loop */ for ($i = 0; $i < 3; $i++) { array_push($comments['comments'], array( 'text' => 'lorem ipsum', 'id' => $i ) ); } 

Надеюсь, это будет для любой помощи и что я не понял вас неправильно.

mysql_fetch_assoc() этого используйте mysql_fetch_assoc() или используйте MYSQL_ASSOC качестве второго аргумента mysql_fetch_array() .

Вот что я сделал бы:

 $dbc = mysql_connect(SERVER, USERNAME, PASSWORD); mysql_select_db($dbc, DATABASE); $query = "SELECT `id`, `text` FROM `comments`"; $result = mysql_query($dbc, $query); $some = Array("comments" => Array()); while($row = mysql_fetch_array($result)) { array_push($some['comments'], Array($row['id'], $row['text'])); } 
 $some['comments'][] = ... 

внутри петли

Вы хотите создать ассоциативный массив , и по этой причине в PHP уже была создана специальная функция, которая называется mysql_fetch_assoc () .

обновленный
Извините, я понял, что вы ошибаетесь. В этом случае вам понадобится этот блок кода ниже.

 $sql="select id,text from comments"; $res=mysql_query($sql); $arr=array(); while($row=mysql_fetch_assoc($res)){ $arr[]=array('id'=>$row['id'],'text'=>$row['text']); } $some=array('comments'=>$arr); в $sql="select id,text from comments"; $res=mysql_query($sql); $arr=array(); while($row=mysql_fetch_assoc($res)){ $arr[]=array('id'=>$row['id'],'text'=>$row['text']); } $some=array('comments'=>$arr); 

Создайте массив с той же структурой, что и таблица комментариев:

 $results = mysql_query("SELECT `id`, `text` FROM `comments`"); while ($row = mysql_fetch_array($results, MYSQL_NUM)) {$comments[intval($row[0])] = $row[1];} 

Массив комментариев теперь структурирован:

 comments[int `id`]=>`comment` 

Тогда, если вам нужны comments в «some» массиве:

 $some['comments'] = $comments;