Подтвердить что ты не робот

Многомерный массив Php из результата mysql

У меня есть таблица mysql, которая выглядит так:

id | uid | title     | description | parent
1  |  1  | Portraits | desc.       | photostream
2  |  1  | Abstract  | descr.      | photostream

и я пытаюсь построить многомерный массив, который будет выглядеть следующим образом:

Array
(
      [0]
          [id] => 1
          [uid] => 1
          [title] => Portraits
          [description] => desc.
          [parent] => photostream
      [1]
          [id] => 2
          [uid] => 1
          [title] => Abstract
          [description] => descr.
          [parent] => photostream
)

Я использую запрос select:

$query = mysql_query(
  "SELECT * FROM `table` WHERE `uid`='1' ORDER BY `id` DESC");

Кто-нибудь знает, как это сделать? Благодаря, Леви

4b9b3361

Ответ 1

$query = mysql_query("SELECT * FROM table WHERE uid = '1' ORDER BY id DESC");
$results = array();
while($line = mysql_fetch_array($query, MYSQL_ASSOC)){
    $results[] = $line;
}

Ответ 2

Это не включает в себя функции sql для сбора данных, но я создал таблицу для моей проблемы (была такая же проблема). Кстати, это моя таблица. Так что это скорее пример, чем объяснение.

Это не полное объяснение, а пример кода.


ТАБЛИЦА:
      [ID | Родитель | имя | href | название]


CODE:

            foreach ($query->result_array() as $row)
{
    if ($row['parent'] === null)
        $data[$row['id']][0]= '<a href="'.$row['href'].'"'.($row['title']!==null)?'title="'.$row['title'].'"':''.'>'.$row['name'].'</a>';
    else 
    {
        $temp = '<a href="'.$row['href'].'"'.($row['title']!==null)?'title="'.$row['title'].'"':''.'>'.$row['name'].'</a>';
        array_push($data[$row['parent']],$temp);
    }
}

Я использовал это для создания ссылок для своего навигатора. Затем я использовал функцию, чтобы сделать из них многоуровневый список. По моей проблеме. Это очень схожая проблема, но это было моим решением.

Если вы хотите. Вместо того, чтобы создавать свою собственную версию. Я могу сделать аналогичный код, используя вашу схему базы данных для данных.

Предупреждение: Кажется, что это может работать только на двухуровневой компоновке. Ill импровизировать код еще несколько и опубликовать следующую версию моего фрагмента.

Ответ 3

$query = mysql_query("SELECT * FROM table WHERE uid = '1' ORDER BY id DESC");
$results = array();
$num_fields=mysql_num_fields($query);
$num_rows=mysql_num_rows($query);
while($line = mysql_fetch_array($query)){

for($i=0;$i<$num_rows;$i++
{
  for($j=0;$j<$num_fields;$j++
  {

  $results[$i][$j]=$line[$i][$j];
  }

}

}