2014-01-13 7 views
2

Я хочу, чтобы многомерный массив в определенном json формате из таблицы возвращался с помощью SQL-запроса. Таблица выглядит так: (извините необработанный формат)Чтобы построить многомерный массив json в PHP

| Дата | Граф | Имя |

| 2013-12-19 | 252 | Значение 1 |

| 2013-12-19 | 60 | Значение 2 |

| 2013-12-19 | 8 | Значение 3 |

| 2013-12-26 | 173 | Значение 1 |

| 2013-12-26 | 32 | Значение 2 |

| 2013-12-26 | 6 | Значение 3 |

Я хочу многомерный массив JSON в указанной ниже формате:

{2013-12-19: [{Имя: "Значение 1", Count: "252"}, {Имя: "Value 2 ", Count:" 60 "}, {Name:" Value 3 ", Count:" 8 "}],

2013-12-26: [{Name:" Value 1 ", Count:" 173 " }, {Name: "Value 2", Count: "32"}, {Name: "Value 3", Count: "6"}] }

Я пробовал код, но я столкнулся с проблемой при добавлении все значения даты внутри этого массива. Вот пример кода, который я пробовал:

$query2_result = mysql_query($query2) or die(mysql_error()); 
    $rows_query2 = mysql_num_rows($query2_result); 
    $records = array(); 

    if($rows_query2 > 0) { 
    while($r = mysql_fetch_array($query2_result)) { 
     if(!array_key_exists($r[date][name],$records[$r[date]])) { 
        $records[$r[date]][name] = array(); 

     } 

     $records[$r[date]]["count"] = $r[count]; 
     $records[$r[date]]["name"] = $r[name]; 
     } 
    } 
    echo json_encode($records); 

Я получаю только один массив для каждой указанной даты. Например:

{"2013-12-19": {"name": "Value 1", "count": "775"}, "2013-12-26": {"name": "Value 1 "," count ":" 397 "}}

Kindle помочь мне. Благодарю вас.

+0

Подумайте о том, используя mysqli, а не mysql, который устарел. – Loopo

ответ

1
$records = array(); 

if($rows_query2 > 0) { 
while($r = mysql_fetch_array($query2_result)) { 
     $records[$r['date']][] = array('name'=>$r['name'],'count'=>$r['count']); 
} 
+0

Спасибо, он отлично работал. – pragaas

0

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

$records[$r[date]][] = $r; 
0

Изменение в то время как логика с ниже один

while($r = mysql_fetch_array($query2_result)) { 
    $records[$r["date"]][] = array( "Name" => $r["name"], "Count" => $r["count"]); 
} 
+0

Спасибо, он работал отлично. – pragaas

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