2017-02-17 4 views
-3

Ich mag den Wert für bestimmte Bedingung unscharf zu schalten. wenn ich unset benutze, benutze es durch einen error.please jemand hilft mir in diesem Fall.wie die ungesetzt in ternärem Operator zu verwenden, mit PHP

$reportHeader = array("name" => !empty($name) ? "Name" : "0", 
    "number" => !empty($number) ? "Number" : "0"); 

In diesem Fall drucken ich den Namen und die Nummer vorhanden ist, wenn ich nicht anwesend 0.but Rückkehr i 0.if Zustand keine Notwendigkeit, nicht gedruckt werden kann i den Wert unscharf zu schalten müssen. Ich habe versucht, wie folgt aus:.

$reportHeader = array("name" => !empty($name) ? "Name" : unset(), 
     "number" => !empty($number) ? "Number" : unset(); 

Aber es durch einen Fehler

+0

Folowing Code Was versuchen Sie unscharf zu schalten verwenden kann? Sie haben PHP nicht mitgeteilt, welches Array oder welcher Index Sie entfernen möchten. – drmonkeyninja

+0

ich möchte Index im Array entfernen –

Antwort

2

Sie nicht unset() so verwenden kann, ist es eine Variable nicht gesetzt, um es zu übergeben erwartet (die PHP documentation sehen Stattdessen füllen Ihre Array mit null Werten, bei denen der Wert nicht und dann array_filter eingestellt wurde verwenden, um die Indizes entfernen Sie nicht wollen.

$reportHeader = array(
    "name" => !empty($name) ? "Name" : null, 
    "number" => !empty($number) ? "Number" : null 
); 
// Now remove the 'unset' values 
$reportHeader = array_filter($reportHeader); 
+0

Ja, es funktioniert, aber manchmal kann $ name zurückkehren „‚(Null-Wert) zurückgeben wir them.but array_filter entfernen die drucken möchten‘“ auch –

+0

@RaghulRajendran Sie vielleicht verwenden müssen ' isset() '' anstelle von '! empty()' in diesem Fall. – drmonkeyninja

0

unset() brauchen eine oder mehr arg . Also, wenn Sie Fehler-Reporting aktiviert und überprüft die Dokumentation für diese Funktion, würden Sie diese selbst sehen. Dann ist die Frage, was genau willst du lösen?

Sie müssen etwas als Wert Ihres Arrays zurückgeben, nicht unset() werden den Wert (wie Sie derzeit versuchen). Wenn Sie nur beabsichtigen, das Element hinzugefügt werden, wenn der Wert nicht leer ist, können Sie

$reportHeader = array(); 
!empty($name) ? $reportHeader['name'] = "Name" : null; 
!empty($number) ? $reportHeader['number'] = "Number" : null; 

tun Dies fügt nur Werte zu Ihrem Array, wenn sie nicht leer sind.

Obwohl ein Standard-if tut dies ganz sauber, auch - nur weil etwas kann als ternären Operator geschrieben werden, bedeutet nicht, es sollte.

if (!empty($name)) 
    $reportHeader['name'] = "Name"; 
0

Sie einfach

!empty($name) ? $reportHeader["name"] = "Name" : ""; 
!empty($number) ? $reportHeader["number"] = "Number" : ""; 
Verwandte Themen