Фильтровать многомерный массив по ключу, если несколько ключей для одного значения - PullRequest
0 голосов
/ 30 мая 2018

У меня большой многомерный массив, подобный приведенному ниже:

$valueall = array();
$valueall[employee_id][salary_month][for_the_month][ed_type][ed_code]=>floatval(amount);

как отфильтровать только массив ed_type = T и сохранить в новый массив?

вывод массива:

Array
(
[010789] => Array
    (
        [2018-04-01] => Array
            (
                [2018-04-01] => Array
                    (
                        [T] => Array
                            (
                                [101] => 4
                                [108] => 2
                                [109] => 1
                            )

                        [O] => Array
                            (
                                [155] => 35.5
                            )

                        [D] => Array
                            (
                                [445] => 1111
                                [446] => 0
                            )

                    )

                [2018-03-01] => Array
                    (
                        [T] => Array
                            (
                                [102] => 2
                            )

                        [E] => Array
                            (
                                [201] => 651
                                [205] => 325
                                [214] => 20
                                [217] => 107
                                [235] => 40
                                [267] => 49
                            )
                    )
            )
    )
)

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

На самом деле вам нужно будет указать внутренние ключи при использовании array_column.См. Ниже, я создал для вас быстрый фрагмент.

$records = [
    "010789" => [
        "2018-04-01" => [
            "2018-04-01" => [
                "T" => [
                    101 => 4,
                    108 => 2,
                    109 => 1,
                ],
                0 => [
                    155 => 35.5
                ],
                "D" => [
                    445 => 1111,
                    446 => 0
                ]
            ],
            "2018-03-01" => [
                "T" => [
                    102 => 2
                ],
                "E" => [
                    201 => 651,
                    205 => 325,
                    214 => 20,
                    217 => 107,
                    235 => 40,
                    267 => 49
                ]
            ]
        ]
    ]
];

print_r(array_column($records["010789"]["2018-04-01"], "T"));

Вывод:

(
    [0] => Array
        (
            [101] => 4
            [108] => 2
            [109] => 1
        )

    [1] => Array
        (
            [102] => 2
        )

)

Дайте мне знать, если это поможет.Благодаря.

0 голосов
/ 30 мая 2018

Вы можете использовать array_column.

$T = array_column($valueall, "T");

Я не могу проверить это, но он должен дать вам значения 101, 108, 109 и 102.

...