2013-10-31 17 views
16

Daję ci szybkie spadanie z tego, co robię.merge_array zwraca null, jeśli jedna lub więcej tablic jest pusta?

Używam wordpressa z wtyczką advanced custom fields. To jest pytanie oparte na php, ponieważ te pola get_field() zawierają tablice obiektów.

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

Na przykład $gallery_location po cenach dumpingowych wróci to ...

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 
} 

jestem następnie używając merge_array scalić oba obiekty ...

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

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

jestem łączenie kilku tablic ale jeśli jedna z tablic jest pusta, powoduje to, że tablica scalania zwraca całkowicie wartość null!

Moje pytanie brzmi: jak mogę zatrzymać merge_array, zwracając wartość null, czy niektóre tablice są puste?

Z góry dziękuję za wszelkie pomysły.


@zessx

To właśnie wracam ...

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


i są to wyniki wysypisk powyżej w tej samej kolejności ...

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 


Jak widać $downloads wciąż powracający null, jeśli staram się używać zarówno rozwiązanie poniżej niego nie działa?

+0

wydaje się dobre. Czy próbowałeś 'var_dump ($ gallery_location); var_dump ($ gallery_studio); 'tuż przed twoim' array_merge'? – zessx

+0

@zessx - Właśnie zaktualizowałem moje pytanie, ponieważ jedna z tablic jest pusta, co powoduje, że scalanie zwraca ogólną wartość null:/ – Joshc

Odpowiedz

44

akceptuje tylko tablice jako parametry. Jeśli jeden z parametrów jest null, to podniesie błąd:

Warning: array_merge(): Argument #x nie jest tablicą ...

Ten błąd nie zostanie podniesiony, jeśli jedna z tablic jest pusta. Pusta tablica jest wciąż tablicą.

dwie opcje:

1/Wymusza typ być array

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

2/Sprawdź, czy zmienne są tablicami

$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

Nie wydaje się, że to powoduje problem zerowy, proszę zobaczyć moje pytanie powyżej na dole, I rzuciłem wszystko, abyś mógł zobaczyć, jakie puste tablice powracają. Dzięki za pomoc do tej pory. – Joshc

+0

Nie było literówki ('downlads' zamiast' downloads'), ale powinno działać, [zobacz ten piaskownica PHP] (http://sandbox.onlinephpfunctions.com/code/7512b59a0e08de604fcb1a87e8ba68d2fb1e57f3) – zessx

+0

Kocham cię tak dużo koleś to teraz działa - przepraszam, że koncentrowałem się, to była tania kopia i wklejanie w moim imieniu. Dzięki, że pomagasz człowiekowi. +1 – Joshc

0

można używać w następujący sposób dla fuzji swoich tablicach:

$c = (array)$a + (array)$b 
Powiązane problemy