@gachkydxvbgd

Как отсортировать массив?

Array (
  [0] => Array (
    [id] => 1
    [user_id] => 1
    [login] => test
    [token] => test
    [expires] => 123
    [childs] => Array (
        [0] => Array (
            [id] => 1
            [item_id] => 1
            [project_id] => 3
            [state] => OFF
            [name] => Test 3
        )
        [1] => Array (
            [id] => 2
            [item_id] => 1
            [project_id] =>
            [state] => OFF
            [name] => Test 2
        )
    )
)
)


Как можно из такого массива сформировать новый, но что бы в childs project_id not null? ( кроме foreach )
Или лучше сделать 2 селекта в бд и получить данные массивы?
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Если без foreach, то array_filter() можно использовать.

Если данные берутся из базы, то почему-бы сразу не выбирать только те, где not null?
Ответ написан
@ipokos
<?php
$array = array(
    [
        'id' => '1',
        'user_id' => 1,
        'child' => [
            [
                'id' => 1,
                'item_id' => 1,
                'project_id' => 3
                ],
             [
                'id' => 2,
                'item_id' => 2,
                'project_id' => 0
                ]
            ]
        ]
    );
    
    var_dump(array_filter($array[0]['child'], function($v, $k) {
    return $k == 'project_id' && $v != 0;
}, ARRAY_FILTER_USE_BOTH));


Результат:
array(1) {
  [0]=>
  array(3) {
    ["id"]=>
    int(1)
    ["item_id"]=>
    int(1)
    ["project_id"]=>
    int(3)
  }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы