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

嚼:

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

响应:

[
    "Location"=> "City 1",
    "AptDate"=> "2020-09-16",
    "AptTime"=> "11:00",
    "AptLength"=> "45",
    "AptStatus"=> "1",
    "Operatory"=> "1 RECALL",
    "OperatoryNum"=> "2"
],    
[
    "Location"=> "City 2",
    "AptDate"=> "2020-09-16",
    "AptTime"=> "09:00",
    "AptLength"=> "45",
    "AptStatus"=> "1",
    "Operatory"=> "1 RECALL",
    "OperatoryNum"=> "2"
],
[
    "Location"=> "City 1",
    "AptDate"=> "2020-09-16",
    "AptTime"=> "12:00",
    "AptLength"-> "45",
    "AptStatus"=>"1",
    "Operatory"=> "1 RECALL",
    "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"
    },
Jitendra Yadav:

因此,根据您的方案,您希望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'];
    }
  
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章