微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

重新映射和分组来自PHP数组中的重复值

如何解决重新映射和分组来自PHP数组中的重复值

我正在尝试将查询的响应重新映射到数据库,并将类似项分组在一个数组中。例如,从下面的示例中。

响应:

[
    "Location"=> "City 1","AptDate"=> "2020-09-16","AptTime"=> "11:00","AptLength"=> "45","AptStatus"=> "1","Operatory"=> "1 RECALL","OperatoryNum"=> "2"
],[
    "Location"=> "City 2","AptTime"=> "09:00",[
    "Location"=> "City 1","AptTime"=> "12:00","AptLength"-> "45","AptStatus"=>"1","OperatoryNum"=> "2"
[,

遍历结果:

           $remappedData=[];
                foreach ($result as $value)
                {
                    $remappedData[] = [
                        'location' => $value['Location'],// And so on
                    ];

                }

}

这并没有真正满足我的需要,因为我试图根据位置对数组进行分组并在该位置上添加AppDate。像这样的东西。

    {
        "Location": "City 1","AptDate": ["2020-09-16","2020-09-16"],"AptTime": ["11:00","12:00"],"AptLength": ["45","45"],"AptStatus": ["1","1"],"Operatory": ["1 RECALL","1 RECALL"],"OperatoryNum": ["2","2"]
    },{
        "Location": "City 2","AptDate": ["2020-09-16"],"AptTime": ["09:00"],"AptLength":[ "45"],"AptStatus": ["1"],"Operatory": ["1 RECALL"],"OperatoryNum": "2"
    },

解决方法

因此,根据您的情况,您希望在Location上进行分组,并通过将所有其他属性保持在数组中进行分组。

foreach ($result as $value)
{
   $remappedData[$value['Location']]['location'] = $value['Location'];
   $remappedData[$value['Location']]['AptDate'][] = $value['AptDate']; // Notice we're creating an array here.
   $remappedData[$value['Location']]['AptTime'][] = $value['AptTime'];
   // so on all other attributes which needs to be grouped.
}

注意:这里我们将索引创建为Location。如果我们不希望Location作为键,我们希望将以下代码用作数组(可能用于前端)。

$temp = [];
$remappedData=[];
$intCurrentIndex = -1;

foreach ($result as $value)
{
    if(isset($temp[$value['Location']])){
         $oldIndex = $temp[$value['Location']];
         $remappedData[$oldIndex]['AptDate'][] = $value['AptDate'];
         $remappedData[$oldIndex]['AptTime'][] = $value['AptTime'];
    }
    else{
          $temp[$value['Location']] = ++$intCurrentIndex;
          $remappedData[$intCurrentIndex]['location'] = $value['Location'];
          $remappedData[$intCurrentIndex]['AptDate'][] = $value['AptDate'];
          $remappedData[$intCurrentIndex]['AptTime'][] = $value['AptTime'];
    }
  
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。