Die ?
geht die wahren Ausgang der Bedingung, die :
die Ausgabe falsch Zustandes des vorausgeht.
Viele Leute werden verwirrt, wenn sie versuchen, & Boolesche Werte zu verarbeiten. Hier ist ein demoecho
und var_export()
mit der Stenographie bedingten Ausgängen anzuzeigen:
$foo='test_item_1';
var_export(preg_match("/^test_item_([0-9]*)/", $foo, $item)?$foo:!$foo);
echo "\n";
echo preg_match("/^test_item_([0-9]*)/", $foo, $item)?$foo:!$foo;
echo "\n\n---\n\n";
$foo='failing string';
var_export(preg_match("/^test_item_([0-9]*)/", $foo, $item)?$foo:!$foo);
echo "\n";
echo preg_match("/^test_item_([0-9]*)/", $foo, $item)?$foo:!$foo;
echo "\n\n---\n\n";
$foo='';
var_export(preg_match("/^test_item_([0-9]*)/", $foo, $item)?$foo:!$foo);
echo "\n";
echo preg_match("/^test_item_([0-9]*)/", $foo, $item)?$foo:!$foo;
Ausgang:
'test_item_1'
test_item_1 // the string as expected
---
false
// print empty string
---
true
1 // converts true to 1
Wie Sie sehen können, echo
verwendet, wird wahrscheinlich zu Verwirrung führen. var_export()
erzählt eine sehr genaue Geschichte der Ausgabe.
Wenn "$ foo" Zeichenfolge Muster entspricht - geben Sie diese Zeichenfolge zurück. Sonst return '! $ Foo' –
es ist dasselbe wie ein' if' und 'else', um das Ergebnis zurückzugeben –
Stichwort: ternär –