基于密钥的组数组

时间:2015-06-16 10:50:02

标签: php arrays grouping

我有一个从我的数据库中提取的数组。这是返回的结果。

criteria = $('form_name').serialize(true);

我想根据产品密钥对此数据库进行分组。这样我就可以获得一个带有产品ID的数组及其相应的值,如图像和数组中的等级。这基本上是针对评级系统,产品及其评级。

如果上述情况不实用,请您建议我用一些方式显示所有产品及其图像及其相应的评级,如上述数据中的一颗星:1两颗星:3颗三颗星:2颗等。

我试过这个

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
        )
)

从上面的代码中我将得到

foreach($ratings as $value) {
           $productID = $value->productID;
           if(isset($result[$productID])){
            $result[$productID][] = $value->rating;
           } else {
                 $result[$productID] = array();
            }
        }

问题是我还需要将图像添加到此,我发现这很难做到。

1 个答案:

答案 0 :(得分:1)

使用以下代码,您将获得关联数组中的结果,并将该键作为产品密钥。我认为这个解决方案没有比访问数组的每个值,获取对象,获取ID以及使用该信息设置新数组更复杂。

while ($row = mysqli_fetch_assoc($res)) {
    $array[$row[id]] = $row;
}

如果你想使用它,那么就这样做

foreach ($array as $val) {
    $array_res[$val->id] = $val;
}
相关问题