the_field mostrar loop fields docs custom advanced acf php arrays advanced-custom-fields

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

PHP Sandbox