2017-01-18 7 views
0

Ich bin immer wahr oder falsch aus Query-String-i haben keine Berechtigung diese für Datenbank wie 0,1Konvertieren von String true/false interger Wert

ich bin mit Ausnahme integer www.example.com?is_test=true

Aber in Backend zu ändern

Um dies zu erreichen, ich bin wie dieses Ereignis

(int) (boolean) 'true' //gives 1 
(int) (boolean) 'false' //gives 1 but i need 0 here 

ich versuche

$test = "false"; 
$bool = settype($test, 'boolean'); //it was giving true 

(int) $bool also gives 1 
versucht

ich bin mir nicht sicher, es könnte eine andere bessere PHP-Funktion, um dies zu erreichen? Oder ein besserer Weg, dies zu bitte

Yah ternären Operator vorschlägt, ist eine beste Option aber ist es noch andere Optionen für die Umwandlung

+0

Bitte überprüfen Sie anderen das gleiche Anforderung und Lösung hier http://stackoverflow.com/questions/4775294/parsing-a-string-into-a-boolean-value-in-php –

+2

'intval ($ _ GET [ 'is_test'] === 'true') ' –

+0

Siehe diese Antwort http://stackoverflow.com/a/10645030/4246973 –

Antwort

2

PHP nicht die Saiten lesen kann. Sie werden eine Art von if-else-Konstruktion verwenden müssen:

if ($GET['is_test'] === 'false') { 
    return 0; 
} else { 
    return 1; 
} 
-1
if(isset($_GET['is_test'])) 
{ 
    return ($_GET['is_test']=="true") ? 1 : 0; 
} 

können Sie nur ternäre Option

+3

sowohl '' wahr '' als auch '' falsch '' geben '1'. Brauchen Zeichenfolge vergleichen. –

1

was ist einfach:

(!empty($_GET['is_test']) && $_GET['is_test'] === 'true' ? 1 : 0)

Edit: Hier prüfen Sie die Existenz der Variablen, damit Sie keinen Hinweisfehler erhalten.

+0

@PathikVejani Eine Nur-Code-Antwort ist vielleicht nicht gut, aber sie ist immer noch eine Antwort. Ich würde dir diesen Beitrag über das LQPRQ empfehlen: [Du machst es falsch: Ein Plädoyer für Vernunft in der Warteschlange für minderwertige Beiträge] (http://meta.stackoverflow.com/questions/287563/youre-doing-it- Falsch-ein-Plädoyer für Vernunft-in-der-Qualität-Posts-Queue) – FelixSFD

0

Wie @vp_arth dies erwähnt war die beste Wahl

echo intval($_GET['is_test'] === 'true') //gives 0,1 for false,true 
1

Die aktuellen Antworten perfekt sind. Zur Wartung und Lesbarkeit können Sie jedoch leicht eine Parser-Klasse erstellen, um diese Aktionen abzuschließen. Wie dies zum Beispiel:

namespace Parser; 

class Convert 
{ 
    public static function StringToBoolean(
     $string 
    ) { 
     if(strpos('true', $string) || strpos('false', $string)) { 
      return strpos('true', $string) ? true : false; 
     } 
     throw new Exception("$string is not true or false."); 
    } 
} 

Dann, wann immer Sie es verwenden möchten, können Sie manuell die Zeichenfolge eingeben oder eine Variable verwenden zu konvertieren.

echo (int) $example = Parser\Convert::StringToBoolean('true'); // 1 
$stringBool = 'false'; 
echo (int) $example = Parser\Convert::StringToBoolean($stringBool); // 0