У меня есть массив, который извлекается из моей базы данных. Это результат возвращается.
Array ( [0] => stdClass Object ( [id] => 4 [productID] => bla123 [rating] => 2 [username] => [image] => black-468-sir-corbett-9-400x400-imadxbb7hyhkgvpc.jpeg ) [1] => stdClass Object ( [id] => 5 [productID] => 12xye [rating] => 4 [username] => [image] => black-602-unistar-5-400x400-imaeffn5mytbruum.jpeg ) [2] => stdClass Object ( [id] => 6 [productID] => bla123 [rating] => 2 [username] => [image] => black-468-sir-corbett-9-400x400-imadxbb7hyhkgvpc.jpeg ) [3] => stdClass Object ( [id] => 7 [productID] => 12xye [rating] => 4 [username] => [image] => black-602-unistar-5-400x400-imaeffn5mytbruum.jpeg ) )
Я хотел бы Группировать эту базу данных по ключевому слову продукта. Чтобы я получил массив с идентификатором продукта и его соответствующими значениями, такими как его изображения и его рейтинг в массиве. Это в основном для рейтинговой системы, продукта и его рейтинга.
Если это не практично, можете ли вы предложить мне способ, которым я могу отображать все продукты с его изображением и его соответствующим рейтингом, как одна звезда: 1 две звезды: 3 три звезды: 2 и т. Д. Из приведенных выше данных.
Я так пробовал
foreach($ratings as $value) { $productID = $value->productID; if(isset($result[$productID])){ $result[$productID][] = $value->rating; } else { $result[$productID] = array(); } }
из приведенного выше кода я получу
Array ( [bla123] => Array ( [0] => 2 [1] => 3 [2] => 2 [3] => 2 [4] => 2 [5] => 2 [6] => 2 [7] => 2 [8] => 2 ) [12xye] => Array ( [0] => 4 [1] => 3 [2] => 3 [3] => 2 [4] => 2 [5] => 4 [6] => 2 [7] => 2 [8] => 2 ) )
Проблема в том, что мне также нужно добавить изображение к этому, что мне очень трудно сделать.
С помощью следующего кода вы получите результат внутри связанного массива с ключом в качестве ключа продукта. Я думаю, что эта резолюция менее сложна, чем переход к каждому значению массива, получить объект, получить идентификатор и установить новый массив с этой информацией.
while ($row = mysqli_fetch_assoc($res)) { $array[$row[id]] = $row; }
Если вы все равно хотите его использовать, сделайте это
foreach ($array as $val) { $array_res[$val->id] = $val; }