如果一个或多个数组为空,则merge_array返回 null


merge_array returns null if one or more of arrays is empty?

我会给你快速介绍我正在做的事情。

我正在使用带有高级自定义字段插件的 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!

我的问题是我怎样才能停止返回 null merge_array某些数组是否为空?

提前感谢您的任何想法。


@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