以下は従来のPHPアプリケーションです。誰かがここで何が起きているのか、一般的な用語が何の裏にあるのか説明して、私が研究することができますか? $foo
があるとして、それが返されたパターンと一致した場合、ほとんど私が? $foo : !$foo
ここで使用するpreg_matchの概念は何ですか?
preg_match("/^test_item_([0-9]*)/", $foo, $item) ? $foo : !$foo
以下は従来のPHPアプリケーションです。誰かがここで何が起きているのか、一般的な用語が何の裏にあるのか説明して、私が研究することができますか? $foo
があるとして、それが返されたパターンと一致した場合、ほとんど私が? $foo : !$foo
ここで使用するpreg_matchの概念は何ですか?
preg_match("/^test_item_([0-9]*)/", $foo, $item) ? $foo : !$foo
に関する混乱しています。それ以外の場合は、!
のために無効になります。
これは、$foo
の実際の内容に応じて、いくつかの異なることを意味します。
これらが可能です。
$foo
は例えば、 "falsy" です。 null
,false
,''
true
を返します。それ以外の場合は、false
を返します。
例:
$foo = 'test_item_1'; // leads to 'test_item_1'
$foo = 'test_item'; // leads to false
$foo = ''; // leads to true
これは非常に恐ろしい行動である、あなたは意図がより明確にする必要があります。
優れた、どうもありがとう。また、それが最善のコードではないことがわかっていると、最も洞察が深まります。 – mayersdesign
?
が真状態の出力の前に、:
は偽条件の出力に先行します。
&のブール値を表示しようとすると、多くの人が混乱してしまいます。ここでは速記条件付きの出力を表示するためにecho
とvar_export()
を使用してdemoです:
$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;
出力:あなたが見ることができるように
'test_item_1'
test_item_1 // the string as expected
---
false
// print empty string
---
true
1 // converts true to 1
、echo
を使用する可能性が混乱を招くだろう。 var_export()
は非常に正確な出力を示します。
'$ foo'文字列がpatternと一致する場合 - この文字列を返します。それ以外の場合は '!$ foo'を返す –
結果を返すために' if'と 'else'と同じものが返されます –
キーワード:ternary –