merge array возвращает null, если один или несколько массивов пусты?

Я дам вам быстрый обзор того, что я делаю.

я использую wordpress с расширенный пользовательские поля плагин. Это вопрос на основе php, потому что эти get_field() поля содержат массивы объектов.

$gallery_location   = get_field('gallery_location');
$gallery_studio = get_field('gallery_studio');
$gallery_location при сбросе вернет это...
array(18) {
  [0]=>
  array(10) {
    ["id"]=>
    int(126)
    ["alt"]=>
    string(0) ""
    ["title"]=>
    string(33) "CBR1000RR STD Supersport 2014 001"
    ["caption"]=>
    string(0) ""
    ["description"]=>
    string(0) ""
    ["mime_type"]=>
    string(10) "image/jpeg"
    ["url"]=>
    string(94) "http://www.example.com/wp/wp-content/uploads/2013/10/CBR1000RR-STD-Supersport-2014-001.jpg"
    ["width"]=>
    int(7360)
    ["height"]=>
    int(4912)
  }
... on so fourth
}

я тогда через merge_array объединить оба объекта...

$gallery_location = get_field('gallery_location');
$gallery_studio = get_field('gallery_studio');

$downloads = array_merge( $gallery_location, $gallery_studio );

я объединяю несколько массивов, но если один из массивов затем пустое это вызывает массива слиянием полностью возвратить нуль!

мой вопрос в том, как я могу остановить merge_array, возвращающий null, некоторые из массивов пусты?

заранее спасибо за любые идеи.


@zessx

это то, что я возвращаюсь...

$gallery_location   = get_field( 'gallery_location' );
$gallery_studio     = get_field( 'gallery_studio' );

$downloads = array_merge( $gallery_location, $gallery_studio );

var_dump($gallery_location);

var_dump($gallery_studio);

var_dump($downloads);


и это результаты дампов выше в same порядок...

string(0) ""


array(18) {
  [0]=>
  array(10) {
    ["id"]=>
    int(126)
    ["alt"]=>
    string(0) ""
    ["title"]=>
    string(33) "CBR1000RR STD Supersport 2014 001"
    ["caption"]=>
    string(0) ""
    ["description"]=>
    string(0) ""
    ["mime_type"]=>
    string(10) "image/jpeg"
    ["url"]=>
    string(94) "http://www.example.com/wp/wp-content/uploads/2013/10/CBR1000RR-STD-Supersport-2014-001.jpg"
    ["width"]=>
    int(7360)
    ["height"]=>
    int(4912)
  }
... on so fourth
}


NULL


Как видите,$downloads все еще возвращает null, если я попытаюсь использовать оба ваших решения ниже, это не сработает?

2 ответов


array_merge принимает в качестве параметров только массивы. Если один из ваших параметров равен null, это вызовет ошибку:

Warning: array_merge (): аргумент #x не является массивом...

эта ошибка не возникает, если один из массивов пуст. Пустой массив-это все-таки массив.

два варианта :

1/ принудительного типа array

$downloads = array_merge( (array)$gallery_location, (array)$gallery_studio );

2 / Проверьте, являются ли переменные массивы

$downloads = array();
if(is_array($gallery_location))
    $downloads = array_merge($downloads, $gallery_location);
if(is_array($gallery_studio ))
    $downloads = array_merge($downloads, $gallery_studio);

PHP Sandbox


для объединения массивов можно использовать следующий способ:

$c = (array)$a + (array)$b