我想基于idClient的键创建数组,现在我的数组如下所示:
Array
(
[0] => Array
(
[idClient] => 101
[Month] => 01
[monthTotal] => 900.00
)
[1] => Array
(
[idClient] => 101
[Month] => 02
[monthTotal] => 100.00
)
[2] => Array
(
[idClient] => 102
[Month] => 02
[monthTotal] => 400.00
)
[3] => Array
(
[idClient] => 103
[Month] => 03
[monthTotal] => 300.00
)
[4] => Array
(
[idClient] => 103
[Month] => 01
[monthTotal] => 100.00
)
[5] => Array
(
[idClient] => 103
[Month] => 02
[monthTotal] => 200.00
)
)
我想以此方式创建一个新数组。请,有人可以帮我吗?
Array
(
[101] => Array
(
[01] => 900.00
[02] => 100.00
)
[102] => Array
(
[02] => 400.00
)
[103] => Array
(
[01] => 100.00
[02] => 200.00
[03] => 300.00
)
)
此处:[101],[102]和[103]是数组的idClient, 而[01],[02],[03]是月份号。
还有900、100、400等数量的monthTotal,具体取决于月份数。
答案 0 :(得分:1)
首先执行array_column,仅获取idClient
$ClientIds = array_unique(array_column($records, 'idClient'));//$records will be your array
然后使用此循环
foreach($ClientIds as $id){
foreach($records as $row){
if($id = $row['idClient']){
$data[$id][$row['Month']] = $row['monthTotal'];
}
}
}
echo var_dump($data);die;
答案 1 :(得分:1)
输入
$array = array
(
array
(
"idClient" => 101,
"Month" => "01",
"monthTotal" => "900.00",
),
array
(
"idClient" => 101,
"Month" => "02",
"monthTotal" => "100.00",
),
array
(
"idClient" => 102,
"Month" => "02",
"monthTotal" => "400.00",
),
array
(
"idClient" => 103,
"Month" => "03",
"monthTotal" => "300.00",
),
array
(
"idClient" => 103,
"Month" => "01",
"monthTotal" => "100.00",
),
array
(
"idClient" => 103,
"Month" => "02",
"monthTotal" => "200.00",
)
);
PHP脚本
$narray = array();
if ($array) {
foreach($array as $key => $value){
if(!array_key_exists($value['idClient'],$narray)){
$narray[$value['idClient']] = array();
}
$narray[$value['idClient']][$value['Month']] = $value['monthTotal'];
}
}
print_r($narray);
输出
Array
(
[101] => Array
(
[01] => 900.00
[02] => 100.00
)
[102] => Array
(
[02] => 400.00
)
[103] => Array
(
[03] => 300.00
[01] => 100.00
[02] => 200.00
)
)