PHP如何用一个或多个相同的键创建一个新的多维数组?

gosulove

我有以下多维数组

if($this->conn->row_count($sql)==true){
    while($row=$statement->fetch()){
        $problems[]=[
                    'order_id'=>$row['order_id'],
                    'details'=>['remark'=>$row['remark'],'date'=>$row['date']]
                    ];
    }
    return $problems;
}

然后我把它打印出来

echo '<pre>',print_r($problems),'</pre>';

结果

Array
(
    [0] => Array
        (
            [order_id] => 4683
            [details] => Array
                (
                    [remark] => happy
                    [date] => 2018-06-09---10:16:41am
                )

        )

    [1] => Array
        (
            [order_id] => 4683
            [details] => Array
                (
                    [remark] => unhappy
                    [date] => 2018-06-10---03:29:00am
                )

        )

    [2] => Array
        (
            [order_id] => 4440
            [details] => Array
                (
                    [remark] => very unhappy
                    [date] => 2018-06-10---03:34:00am
                )

        )

)   

如果相同的order_id,我试图将它们分组为一个新的多维数组,并加入详细信息。order_id可以有2个以上,因为关于order_id的注释可能更多*如下所示

Array
(
    [0] => Array
        (
            [order_id] => 4683
            [details] => Array
                (
                    [remark] => happy
                    [date] => 2018-06-09---10:16:41am
                ),
                (
                    [remark] => unhappy
                    [date] => 2018-06-10---03:29:00am
                )

        )

    [1] => Array
        (
            [order_id] => 4440
            [details] => Array
                (
                    [remark] => very unhappy
                    [date] => 2018-06-10---03:34:00am
                )

        )

)   

要获得更清晰的图片,请查看屏幕截图

在此处输入图片说明

知道如何像Output一样创建一个新数组吗?

埃迪

您可以按关联数组对其进行分组。您可以用于array_values将关联数组转换为简单数组。

$problems = [];
if($this->conn->row_count($sql)==true){
    while($row=$statement->fetch()){
        if ( !isset( $problems[ $row['order_id'] ] ) ) {
            $problems[ $row['order_id'] ] = [
                'order_id' => $row['order_id'],
                'details' => []
            ];
        }
        $problems[ $row['order_id'] ]['details'][] = ['remark'=>$row['remark'],'date'=>$row['date']];
    }
    return array_values( $problems );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章