2009-09-09 14 views
10

Mój scenariusz:MySQL IFNULL równoważne dla php

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

Chciałbym go mieć jak MySQL:

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

lub coś podobnego, że również przetestować dla fałszu idealnie. W ten sposób musiałbym tylko raz wywołać tę funkcję!

Wiem, że mogę po prostu przypisać go do var, ale to by dodać kolejną linię do mojego kodu (o nooes !!). To naprawdę kosmetyczka, myślę, że łatwiej będzie ją przeczytać. W każdym razie Google nie pomógł mi (inb4 ktoś mi udowodnił błąd). Dzięki!

+0

@andre tak ... Jestem świadomy, że I mógł napisać funkcję, żeby to zrobić, naprawdę próbuję dowiedzieć się, czy jest jakiś wbudowany sposób, o którym nie wiem. Wygląda na to, że odpowiedź brzmi "nie", ale zamierzam trochę wytrzymać. Był czas, kiedy nie wiedziałem o zwięzłości, jeśli, więc pomyślałem, hej, może to też jest wbudowane! W każdym razie dzięki. –

+0

Wycofałem się, aby usunąć znacznik "mysql". To pytanie nie ma nic wspólnego z mysql, po prostu chciałem trochę funkcjonalności php * jak * trochę funkcji mysql. –

Odpowiedz

12

Począwszy od PHP 5.3 można również użyć short ternary operator:

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

Jest to w zasadzie planowaną funkcjonalność, ale bez konieczności deklarowania funkcji. W wersjach PHP wcześniejszych niż 5.3 powinieneś użyć odpowiedzi André.

Należy pamiętać jednak, że wywołanie funkcji może rzucać ostrzeżenia, jeżeli ma zamiar sprawdzić tablice, w których klucze nie są określone: ​​

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

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

Czy to nie przydzieli TRUE do $ exTime, jeśli ustawiono session.gc_maxlifetime? To naprawdę nie robi tego dla mnie, ponieważ potrzebuję $ exTime do przechowywania wartości zwracanej get_cfg_var ("session.gc_maxlifetime") *, chyba że jest to wartość null/false *, aby nie trzymać TRUE lub 1440. (Zakładam, że to " isnull "jest naprawdę" is_null "i nie używasz tej funkcji z andré). Dzięki, nie wiedziałem o krótkim trójkowym! –

+0

poczekaj sekundę, po prostu usuń opakowanie "isnull" i to jest bilet! Dzięki! http://www.asgrim.com/2009/06/30/awesome-short-ternary-operators/ –

+0

Tylko dla kompletności, tutaj jest link do dokumentów PHP, gdzie wspomniany jest krótki trójskładnikowy operator: http: // www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary – mtnorthrop

3

Co powiesz na dodanie tej małej funkcji?

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

nie wiem jakiejkolwiek funkcji, która robi to, co chcesz, ale ponieważ to nie że trudne do wdrożenia równie dobrze można to zrobić, jeśli używasz go dużo.

+0

nadal możesz mieć błąd "Niezdefiniowana zmienna" w tym przypadku. –