php - mostrar - merge_array devuelve nulo si uno o más de los arrays están vacíos?
show advanced custom fields (2)
Puede utilizar la siguiente forma para fusionar sus matrices:
$c = (array)$a + (array)$b
Te daré un rápido resumen de lo que estoy haciendo.
Estoy usando wordpress con el complemento avanzado de campos personalizados . Esta es una pregunta basada en php porque estos campos get_field()
contienen matrices de objetos.
$gallery_location = get_field(''gallery_location'');
$gallery_studio = get_field(''gallery_studio'');
Por ejemplo, $gallery_location
cuando se vuelca devolverá este ...
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
}
Entonces estoy usando merge_array para fusionar ambos objetos ...
$gallery_location = get_field(''gallery_location'');
$gallery_studio = get_field(''gallery_studio'');
$downloads = array_merge( $gallery_location, $gallery_studio );
Estoy fusionando varias matrices, pero si una de las matrices está vacía, esto hace que la matriz de fusión se devuelva nula por completo.
Mi pregunta es: ¿cómo puedo dejar de devolver nulo a merge_array si algunos de los arreglos están vacíos?
Gracias de antemano por cualquier idea.
@zessx
Esto es lo que estoy volviendo ...
$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);
Y estos son los resultados de vertederos de arriba en el mismo orden ...
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
Como puede ver, $downloads
sigue devolviendo el valor nulo, si intento usar la solución a continuación, ¿no funciona?
array_merge
solo acepta matrices como parámetros. Si uno de tus parámetros es nulo, generará un error:
Advertencia: array_merge (): Argumento #x no es una matriz ...
Este error no se producirá si una de las matrices está vacía. Una matriz vacía sigue siendo una matriz.
Dos opciones :
1 / Forzar el tipo para ser array
$downloads = array_merge( (array)$gallery_location, (array)$gallery_studio );
2 / Comprobar si las variables son matrices.
$downloads = array();
if(is_array($gallery_location))
$downloads = array_merge($downloads, $gallery_location);
if(is_array($gallery_studio ))
$downloads = array_merge($downloads, $gallery_studio);