2013-10-31 13 views
16

Ich werde dir schnell einen Überblick über das geben, was ich tue.merge_array gibt null zurück, wenn ein oder mehrere Arrays leer sind?

Ich verwende WordPress mit dem advanced custom fields Plugin. Dies ist eine PHP-basierte Frage, da diese get_field() Felder Objekt-Arrays enthalten.

$gallery_location = get_field('gallery_location'); 
$gallery_studio = get_field('gallery_studio'); 

Zum Beispiel $gallery_location wenn dies wird wieder abgeladen ...

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 
} 

ich dann merge_array mit beiden Objekte zu verschmelzen ...

$gallery_location = get_field('gallery_location'); 
$gallery_studio = get_field('gallery_studio'); 

$downloads = array_merge($gallery_location, $gallery_studio); 

ich mehrere Arrays am verschmelzenden aber Wenn eines der Arrays leer ist, bewirkt dies, dass das Merge-Array null zurückgibt!

Meine Frage ist, wie kann ich stoppen Merge_array zurückgeben Null ist einige der Arrays sind leer?

Vielen Dank im Voraus für irgendwelche Ideen.


@zessx

Dies ist, was ich bin wieder ...

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


und diese sind die Ergebnisse von Deponien oben in derselben Reihenfolge ...

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 


Wie Sie $downloads noch null zurückkehrt sehen, wenn ich versuche, und verwenden Sie sowohl Ihre Lösung unter es nicht funktioniert?

+0

Scheint gut. Hast du deinen 'var_dump ($ gallery_location) versucht; var_dump ($ gallery_studio); 'kurz vor deiner' array_merge'? – zessx

+0

@zessx - Ich habe gerade meine Frage aktualisiert, es ist, weil eine der Arrays leer ist, die Zusammenführung Null insgesamt zurückgeben:/ – Joshc

Antwort

44

array_merge akzeptiert nur Arrays als Parameter. Wenn einer Ihrer Parameter null ist, wird ein Fehler ausgelöst:

Warnung: array_merge(): Argument #x kein Array ...

Dieser Fehler wird nicht erhöht werden, wenn Eines der Arrays ist leer. Ein leeres Array ist immer noch ein Array.

zwei Optionen:

1/den Typ Erzwingen array

$downloads = array_merge((array)$gallery_location, (array)$gallery_studio); 

2/Überprüfen Sie, ob Variablen sind Arrays

$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

+0

Dies scheint nicht das Null-Problem, siehe meine Frage oben auf der Unterseite, ich haben alles weggeworfen, damit Sie sehen können, welche leeren Arrays zurückkommen. Vielen Dank für Ihre Hilfe. – Joshc

+0

Es gab einen Tippfehler ('downlads' anstelle von' downloads'), aber es sollte funktionieren, [siehe diese PHP-Sandbox] (http://sandbox.onlinephpfunctions.com/code/7512b59a0e08de604fcb1a87e8ba68d2fb1e57f3) – zessx

+0

Ich liebe dich so sehr, Alter jetzt funktioniert - Entschuldigung, ich war Konzentration, es war eine billige Kopie und einfügen für mich. Danke für deine Hilfe. +1 – Joshc

0

Sie können die folgende Methode zum Zusammenführen Ihrer Arrays verwenden:

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