我有一组相同列的重复值和同一列的不同值。所以我试着得到一个可以包含所有数据的最终数组。
实际数组:
array:4 [▼
0 => {#820 ▼
+"id": 318
+"asset_id": 11
+"job_id": 37
+"asset_name": "Mini Paver"
+"shift": "AM
}
1 => {#819 ▼
+"id": 319
+"asset_id": 39
+"job_id": 37
+"asset_name": "Road Sweeper"
+"shift": "AM
}
2 => {#701 ▼
+"id": 320
+"asset_id": 11
+"job_id": 37
+"asset_name": "Mini Paver"
+"shift": "AM
}
3 => {#825 ▼
+"id": 321
+"asset_id": 39
+"job_id": 37
+"asset_name": "Road Sweeper"
+"shift": "AM
}
]
并且通过在下面使用每个循环,我试图从四个中获得一个数组。
$jobArr = array();
foreach ($job_data as $data) {
$jobArr[$data['job_id']]['job_id'] = $data->job_id;
$jobArr[$data['job_id']]['shift'] = $data->shift;
$jobArr[$data['job_id']]['asset_name'][] = $data->asset_name;
}
以上foreach的输出如下
array:1 [▼
37 => array:8 [▼
"job_id" => 37
"shift" => "AM"
"asset_name" => array:2 [▼
0 => "Road Sweeper "
1 => "Mini Paver "
]
]
]
实际上我需要得到计数,以及有多少资产名称具有相同的名称,如下所示
array:1 [▼
37 => array:8 [▼
"job_id" => 37
"shift" => "AM"
"asset_name" => array:2 [▼
0 => "Road Sweeper (2)"
1 => "Mini Paver (2)"
]
]
]
如何获得相同asset_name和结果数组的计数,如上所述。请提出任何建议。
答案 0 :(得分:0)
如图所示构建了您的分组数组后,您可以迭代它并使用array_count_values
生成新格式的数组,然后用新数组替换asset_name
数组。
foreach ($jobArr as $job_id => $job) {
// iterate the counted values and build your array with the desired format
foreach(array_count_values($job['asset_name']) as $asset => $count) {
$counts[] = "$asset ($count)";
}
// replace the old asset_name key with your new counted/formatted array
$jobArr[$job_id]['asset_name'] = $counts;
}