удалить пустой массив из массива - PullRequest
0 голосов
/ 06 апреля 2020

У меня проблема в том, что у меня есть массив и в этом массиве также подмассив. Я хочу удалить подмассив, который не содержит никаких значений, вместо [] в null

enter image description here

1 Ответ

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

Эта рекурсивная функция должна сработать ... будет касаться только пустых массивов

<?php


function emptyArraysToNull(&$object){
    if(is_array($object))
    foreach ($object as $key => &$value) {
      if (is_array($value)) {
        $value = emptyArraysToNull($value);
      }
      if (empty($value)) {
        $object[$key] = null;
      }
    }
    return $object;
    }


// TEST

$very_nested_array = [
        [
            "name" => "test",
            "id" => 1,

            "districts" => [
                "id" => 2,
                "districts" => [],
                "test" => []
            ]
        ],
        [
            "id" => []
        ]
    ];


print_r(emptyArraysToNull($very_nested_array)); 

Вывод:

array(2) {
  [0]=>
  array(3) {
    ["name"]=>
    string(4) "test"
    ["id"]=>
    int(1)
    ["districts"]=>
    array(3) {
      ["id"]=>
      int(2)
      ["districts"]=>
      NULL
      ["test"]=>
      NULL
    }
  }
  [1]=>
  array(1) {
    ["id"]=>
    NULL
  }
}

Живая демонстрация: http://sandbox.onlinephpfunctions.com/code/4644ec81b623d9cd0c79e1aa67ab55a64cd9416d

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