Создать новую базу массива на любом ключе текущего массива - PullRequest
0 голосов
/ 23 марта 2019

Я хочу создать базу Array на основе ключа 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 и т. Д. Сумма месяца в соответствии с номером месяца.

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Введите

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

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

)
1 голос
/ 23 марта 2019

First Do 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...