2010-09-08 9 views
5

Kiedy echo dla wartości boolowskiej (prawda lub fałsz), PHP konwertuje ją na 1 lub <nothing> i wyświetla ją. np:PHP boolean na ciąg z modyfikacją i warunkiem

$x = true; echo $x; //displays: 1 
$x = false; echo $x; //displays: <nothing> 

Moje pytanie: Czy istnieje funkcja PHP (jeśli nie, jak go Code), który może wyświetlać dokładnie „true” lub „false” (a nie 1 lub nic), jeśli zmienna jest boolean inaczej po prostu wyświetlać jak PHP normalnie go wyświetlać.

Odpowiedz

7

Tak, to może być łatwo kodowane tak:

function var_to_str($in) 
{ 
    if(is_bool($in)) 
    { 
     if($in) 
     return "true"; 
     else 
     return "false"; 
    } 
    else 
     return $in; 
} 

//Test it now 
echo var_to_str("this is string") . PHP_EOL; 
echo var_to_str(123) . PHP_EOL; 
echo var_to_str(true) . PHP_EOL; 
echo var_to_str(false) . PHP_EOL; 

This wyjścia:

this is string 
123 
true 
false 
8

Właśnie szukałem to zrobić, ale potrzebne do niej bez funkcji inline tak Właśnie użyłem:

echo(is_bool($x) ? ($x ? "true":"false"):$x); 

Nie najłatwiejszy do odczytania, ale wykonuje swoją pracę!

+0

Uwielbiam ten! Całkiem :) –

0

miałem ten problem, znaleźć na to pytanie, a odpowiedź była nie całkiem to, co potrzebne, więc wypracowane to:

array_pop (array_keys (array ('false' => false, 'true' => true), [bool]))

po prostu uzyskać wydrukowaną (echo) wartość ciągu dla [bool], zastępując [bool] zmienną znaną jako bool.

że może pomóc innym, którzy znaleźli na to pytanie ....

+0

To by działało, ale poważny hit wydajnościowy. Lepiej napisać funkcję, która zwraca odpowiedni ciąg dla wartości. – metadings

1
str_replace(array(0, 1), array("No", "Yes"), str_pad(headers_sent(), 1, "0")) 

użyłem headers_sent() tylko jako zmienna logiczna.