2009-09-09 8 views
10

Mein Szenario:MySQL IFNULL Äquivalent für PHP

$exTime = get_cfg_var("session.gc_maxlifetime")?get_cfg_var("session.gc_maxlifetime"):1440; 

Ich möchte es wie mysql sein:

$exTime = isnull(get_cfg_var("session.gc_maxlifetime"),1440); 

oder so ähnlich, die auch für FALSCH ideal testen würde. So müsste ich die Funktion nur einmal aufrufen!

Ich weiß, ich könnte es nur einer Var zuweisen, aber das würde eine weitere Zeile zu meinem Code hinzufügen (oh nein!). Es ist wirklich eine kosmetische Sache, ich denke, es wäre einfacher zu lesen. Wie auch immer, google hat mir nicht geholfen (inb4 jemand, der mich falsch beweist). Vielen Dank!

+0

@andre ja ... Ich weiß, dass ich könnte eine Funktion schreiben, um es zu tun, ich versuche wirklich herauszufinden, ob es eine eingebaute Möglichkeit gibt, von der ich nichts weiß. Es klingt wie die Antwort ist "Nein", aber ich werde ein bisschen durchhalten. Es gab eine Zeit, in der ich nicht über prägnant wusste, wenn, so dachte ich, hey, vielleicht ist das auch eingebaut! Trotzdem danke. –

+0

Ich rollte zurück, um das "mysql" -Tag zu entfernen. Diese Frage hat nicht mit mysql zu tun, wollte nur ein bisschen PHP-Funktionalität * wie * ein bisschen Mysql-Funktionalität. –

Antwort

12

Ab 5.3 PHP könnte man auch die short ternary operator verwenden:

$exTime = get_cfg_var("session.gc_maxlifetime") ?: 1440; 

Dies ist im Grunde Ihre erwartete Funktionalität, aber ohne die Funktion zu erklären zu haben. In PHP-Versionen vor 5.3 sollten Sie mit Andrés Antwort gehen.

Beachten Sie aber, dass die Funktion aufrufen Warnungen werfen könnte, wenn es im Begriff ist, Arrays zu überprüfen, in denen Schlüssel nicht angegeben ist:

$array = array(
    0 => array(
     0 => 100 
    ) 
); 

$example = isNull($array[0][1], 200); 
+0

Wird dies nicht zu $ ​​exTime zuweisen, wenn session.gc_maxlifetime gesetzt ist? Das macht es nicht wirklich für mich, weil ich $ exTime brauche, um den Rückgabewert von get_cfg_var ("session.gc_maxlifetime") * zu speichern, es sei denn, es ist null/false *, nicht TRUE oder 1440 zu halten. (Ich nehme an, dass das " isnull "ist wirklich" is_null "und Sie verwenden nicht die Funktion von andré). Danke, ich wusste nichts von Kurzdreiern! –

+0

warte eine Sekunde, entferne einfach den "isnull" -Wrapper und das ist das Ticket! Vielen Dank! http://www.asgrim.com/2009/06/30/awesome-short-ternary-operators/ –

+0

Nur der Vollständigkeit halber, hier ist ein Link zu den PHP-Dokumenten, wo der kurze ternäre Operator erwähnt wird: http: // www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary – mtnorthrop

3

Wie wäre es mit dieser kleinen Funktion?

function isnull($var, $default=null) { 
    return is_null($var) ? $default : $var; 
} 

Ich weiß nicht, von jeder Funktion, die das tut, was Sie wollen, aber da es nicht dass schwer Sie auch tun implementieren könnte, dass, wenn Sie es verwenden viel.

+0

Sie können immer noch "Undefinierte Variable" Fehler in diesem Fall haben. –