Добрый вечер дорогие друзья. Есть вопрос. JOIN-ом объединил две таблицы
'SELECT portfolio.id, portfolio.name, images.path from portfolio join images on portfolio.id = images.portfolio_id'
и получил такую вот выборку.
id => 1, name => first, path => cars1.jpg
id => 1, name => first, path => cars2.jpg
id => 2, name => second, path => cars3.jpg
id => 2, name => second, path => cars4.jpg
Теперь мне необходимо сформировать эту выборку в json следующего вида:
[
0: {
id: 1,
name: first,
path: [
0: cars1.jpg,
1: cars2.jpg
]
},
1: {
id: 2,
name: second,
path: [
0: cars3.jpg,
1: cars4.jpg
]
}
]
У меня в принципе получилось это сделать, но правда идиотским способом:
$result = [];
$query = mysqli_query($connection, "select * from portfolio");
while($row = mysqli_fetch_assoc($query)){
$id = $row['id'];
$query_images = mysqli_query($connection, "select path from images where portfolio_id ="."$id");
while($image_row = mysqli_fetch_assoc($query_images)) {
$row['images'][] = $image_row['path'];
}
$result[] = $row;
}
Потому ребятки очень сильно хочется услышать ваше мнение. Подмогните плиз. :)
Если просто пройтись по первой выборке:
$arr=[
["id" => 1, "name" => "first", "path" => "cars1.jpg"],
["id" => 1, "name" => "first", "path" => "cars2.jpg"],
["id" => 2, "name" => "second", "path" => "cars3.jpg"],
["id" => 2, "name" => "second", "path" => "cars4.jpg"],
];
foreach($arr as $k=>$v){
$result[$v['id']]['id']=$v['id'];
$result[$v['id']]['name']=$v['name'];
$result[$v['id']]['path'][]=$v['path'];
}
$result=array_values($result); // сброс ключей (по желанию)
echo '<pre>'; print_r(json_encode($result,JSON_PRETTY_PRINT));
или сразу в while
while($row = mysqli_fetch_assoc($query)){
$result[$row['id']]['id']=$row['id'];
$result[$row['id']]['name']=$row['name'];
$result[$row['id']]['path'][]=$row['path'];
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Помогите разобратьсяЕсть JSON, но не могу понять что за структура и правильная ли она
часто встречается код, который содержит открытие и закрытие тегов php на каждой строкеНапример: