Как я могу преобразовать результаты 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;