在当前数组的任何键上创建新的数组基础



我想在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等金额按月数累计。

输入

$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
    )
)

首先要做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;

最新更新