Intereting Posts
Как удалить некоторую строку из текстового файла с помощью PHP? Что такое контейнер для инъекций зависимостей? Могу ли я использовать точку и обратную косую черту вместо dirname ()? Как реализовать разбиение на страницы в PHP? Если переменная равна значению php Как отобразить результаты поиска в WordPress? Рекомендации и рекомендации по созданию сайта с прокси-сайтом Профайлер PHP с подсчетом выполнения, временем и т. Д. Без расширений Как создать вспомогательные массивы на основе префиксов строки? Массив переупорядочения PHP для отображения иерархии родительских / идентификационных данных Удаление элемента массива по значению Php извлекает строки из нескольких таблиц MySQL Как передать значения полей ввода формы в скрипт, используя AJAX / jQuery? Получить текущий год и следующую форму mysql Встроенные изображения, превышающие длину

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

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

Мой вопрос: как я могу остановить 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); 

и это результаты сбросов выше в том же порядке …

 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, если я пытаюсь использовать оба ваших решения ниже, это не работает?

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

Предупреждение: 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 Песочница

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

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