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

时间:2019-03-23 11:40:24

标签: php codeigniter

我想基于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,具体取决于月份数。

2 个答案:

答案 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
    )

)