2009-09-09 7 views
10

Mon scénario:MySQL IFNULL équivalent pour php

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

Je voudrais que ce soit comme mysql:

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

ou quelque chose comme ce qui testera également pour faux idéalement. De cette façon, je n'aurais qu'à appeler la fonction une fois!

Je sais que je pourrais juste l'assigner à un var, mais cela ajouterait une autre ligne à mon code (oh nooes !!). C'est vraiment une chose cosmétique, je pense que ce serait plus facile à lire. Quoi qu'il en soit google ne m'a pas aidé (inb4 quelqu'un me prouve mal). Merci!

+0

@andre ouais ... Je suis conscient que je Pourrait écrire une fonction pour le faire, j'essaie vraiment de savoir s'il y a un moyen intégré que je ne connais pas. On dirait que la réponse est "non" mais je vais me tenir un peu. Il y avait un temps où je ne savais pas concis si, alors j'ai pensé hey, peut-être que c'est aussi intégré! Merci quand même. –

+0

J'ai annulé la suppression de la balise "mysql". Cette question n'a rien à voir avec mysql, je voulais juste un peu de fonctionnalité PHP * comme * un peu de fonctionnalité mysql. –

Répondre

12

PHP 5.3 vous pouvez également utiliser le short ternary operator:

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

Ceci est fondamentalement votre fonctionnalité attendue, mais sans avoir à déclarer la fonction. Dans les versions de PHP antérieures à 5.3, vous devriez aller avec la réponse d'André.

Gardez à l'esprit que, appelant la fonction peut lancer des avertissements, si elle est sur le point de vérifier les tableaux dans lesquels les clés ne sont pas spécifiées:

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

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

Est-ce que cela affectera TRUE à $ exTime si session.gc_maxlifetime est défini? Cela ne le fait pas vraiment pour moi, car j'ai besoin de $ exTime pour contenir la valeur de retour de get_cfg_var ("session.gc_maxlifetime") * sauf si c'est null/false *, pour ne pas contenir TRUE ou 1440. (Je suppose que cela " isnull "est vraiment" is_null "et vous n'utilisez pas la fonction d'andré). Merci cependant, je ne savais pas à court ternaire! –

+0

attendez une seconde, il suffit de retirer l'emballage "isnull" et c'est le ticket! Merci! http://www.asgrim.com/2009/06/30/awesome-short-ternary-operators/ –

+0

Juste pour être complet, voici un lien vers les docs PHP, où l'opérateur ternaire court est mentionné: http: // www.php.net/manual/fr/language.operators.comparison.php#language.operators.comparison.ternary – mtnorthrop

3

Que diriez-vous d'ajouter cette petite fonction?

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

Je ne sais pas d'une fonction qui fait ce que vous voulez, mais comme ce n'est pas que difficile à mettre en œuvre vous pourriez aussi bien faire que si vous utilisez beaucoup.

+0

vous pouvez toujours avoir une erreur "Undefined variable" dans ce cas. –