我会快速告诉你我正在做的事情。
我正在使用带有advanced custom fields插件的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数组完全返回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,如果我尝试使用下面的解决方案,那么它不起作用?
答案 0 :(得分:52)
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);
答案 1 :(得分:1)
您可以使用以下方式合并数组:
$c = (array)$a + (array)$b