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);