2017-04-13 2 views
-1

Ich möchte Bindestrich (-) zeigen, wenn mein Array nach dem Implodieren leer ist. Hier unten ist mein Versuch soweit.Implodieren mit Standardwert, wenn keine Werte

Ergebnis mit Daten in Array ->https://repl.it/HIUy/0

<?php 

$array = array(1,2); 
$result = array(); 
foreach ($array as $curr_arr) { 

    $result[] = $curr_arr; 
} 
echo 'Array With Data - ' . implode(',', $result); 
//Result : Array With Data : 1,2 
?> 

Ergebnis ohne Daten in Array ->https://repl.it/HIVE/0

<?php 

$array = array(); 
$result = array(); 
foreach ($array as $curr_arr) { 

    $result[] = $curr_arr; 
} 
echo 'Array Without Data - ' . implode(',', $result); 
//Result : Array With Data - :  
?> 

Wie Sie in der zweiten Folge sehen, ich bin nicht in der Lage, etwas zu drucken, wie Mein Array war leer, daher konnte ich nichts drucken.

Allerdings mag ich Dash drucken (-) unter Verwendung von so etwas wie array_filter, die ich bereits versucht mit implode nur, aber ich bin nicht in der Lage, dies zu tun. Hier habe ich versucht, diese https://repl.it/HIVP/0

<?php 

$array = array(); 
$result = array(); 
foreach ($array as $curr_arr) { 

    $result[] = $curr_arr; 
} 
echo 'Array With Data : ' . implode(',', array_filter($result)); 
//Result : Array With Data :  
?> 

jemand führen kann mir, wie dies zu erreichen?

Dank

+4

schreiben den Code als Teil Ihrer Frage –

+1

'if (empty (YOUR_ARRAY))' ' –

+0

echo 'Array ohne Daten -'. (implode (',', $ ergebnis)?: '-'); ' –

Antwort

3

Sie können überprüfen, ob Ihr Array leer ist und dann zurück/Echo einer Dash:

if(!empty($array)){ 
    // Array contains values, everything ok 
    echo 'Array with data - ' . implode('yourGlueHere', $array); 
} else { 
    // Array is empty 
    echo 'Array without data -'; 
} 

Wenn Sie es in einer Zeile haben wollen, können Sie so etwas wie das folgende tun könnte:

+0

Ich weiß das bereits, aber ich möchte implodieren mit Callback oder etwas ähnliches ohne wenn Bedingung. –

+0

@MittulAtTechnoBrave implode hat nur zwei Parameter, 'kleber' und' pieces', es gibt keinen Callback. oder warum erstellen Sie nicht einfach eine benutzerdefinierte Hilfsfunktion mit einer der Antworten in diesem Thread? – imrealashu

0

Antworten geschrieben von Tobias F. und Gopi Chand ist korrekt.

Ansatz 1:
Ich würde vorschlagen, Sie auf diese Weise gehen würden Ihnen helfen (Im Grunde genommen ternären Operator). Wie hier ist keine andere Möglichkeit, dies nur mit implode Funktion zu tun.

echo empty($result) ? '-' : implode(',',$result); 

Ansatz 2
eine Hilfsfunktion wie diese verwenden.

function myImpllode($glue = "", $array = []) 
{ 
    if(!empty($array)){ 
    // Array contains values, everything ok 
    return implode($glue, $array); 
    } else { 
    // Array is empty 
    return '-'; 
    } 
} 
Verwandte Themen