Как проверить и удалить массив нулевых значений из многомерного массива? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть многомерный массив. Я хочу удалить Arrya, если массив все значения являются нулевыми. У меня есть следующий массив:

"qualifications" => array(
[0] => array(
  "qualifications" => "demo"
  "acquisition_date" => null
),
[1] => array(
  "qualifications" => null
  "acquisition_date" => null
),
[2] => array(
  "qualifications" => "test"
  "acquisition" => 123
)
);

Я хочу удалить массив, как индекс [1]. Я пытаюсь следующий код:

$educationalEmptyArray = 'false';
    if (!array_filter(array_map('array_filter', $educational))) {
        $educationalEmptyArray = 'true';
    }

как сбросить или удалить массив нулевых значений, как массив index [1].

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Это не совсем правильный способ, но все же работает:

   $input = array(
        '0' => array(
        "qualifications" => "demo",
        "acquisition_date" => null
        ),
        '1' => array(
        "qualifications" => null,
        "acquisition_date" => null
        ),
        '2' => array(
        "qualifications" => "test",
        "acquisition" => 123
        )
    );
    $output = array();
    foreach($input as $array) {
        foreach($array as $key=>$value){
            if($array[$key]){
                array_push($output,$array);
                break;
            }
        }
    }

Массив $ output полностью удаляет массив нулевых значений, такой как массив index [1]. Приведенный выше код дает следующий вывод:

Array
(
    [0] => Array
        (
            [qualifications] => demo
            [acquisition_date] => 
        )

    [1] => Array
        (
            [qualifications] => test
            [acquisition] => 123
        )

)
0 голосов
/ 24 апреля 2020

Я бы предложил использовать для этого Laravel Collection с, поскольку это облегчает манипуляции такого рода. Есть много, много, много способов сделать это, но это должно сработать

$collection = collect($educational)->reject(function ($items) {
    foreach ($items as $item) {
        if ($item !== null) {
            // We have an actual value so we can safely ignore and return early
            return false;
        }
    }
    // We didn't find a non-null value, so we reject this array
    return true;
});

Я не уверен, насколько это будет эффективно с моей головы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...