私はPHPの知識を拡張したいと思っています。そして、それが何であるか、それをどのように検索するのかわからない何かに出会いました。php.netissetコードを見ていますisset($_GET['something']) ? $_GET['something'] : ''
が表示されます
if(isset($_GET['something']){ If something is exists, then it is set and we will do something }
などの通常のisset操作は理解していますが、?、getの繰り返し、:または ''がわかりません。誰かが私のためにこれを打破するのを助けることができますか、少なくとも正しい方向に私を向けますか?
通常、「速記」または 三項演算子 と呼ばれます。
$test = isset($_GET['something']) ? $_GET['something'] : '';
手段
if(isset($_GET['something'])) {
$test = $_GET['something'];
} else {
$test = '';
}
分解するには:
$test = ... // assign variable
isset(...) // test
? ... // if test is true, do ... (equivalent to if)
: ... // otherwise... (equivalent to else)
または...
// test --v
if(isset(...)) { // if test is true, do ... (equivalent to ?)
$test = // assign variable
} else { // otherwise... (equivalent to :)
これは三項演算子と呼ばれ、主にif-elseステートメントの代わりに使用されます。
指定した例では、issetがtrueを返す場合、配列から値を取得するために使用できます
isset($_GET['something']) ? $_GET['something'] : ''
に等しい
if (isset($_GET['something'])) {
$_GET['something'];
} else {
'';
}
もちろん、何かに割り当てない限り、あまり使用されません。また、ユーザーが送信した値にデフォルト値を割り当てることもできます。
$username = isset($_GET['username']) ? $_GET['username'] : 'anonymous'
Php 7からさらに短く書くことができます:
$age = $_GET['age']) ?? 27;
そしてこれは、年齢パラメータがURLで提供されている場合、$age
varに設定されるか、デフォルトで27に設定されることを意味します
すべて見る PHP 7の新機能
三項演算子 に遭遇しました。基本的なif-elseステートメントの目的です。次のコードは同じことを行います。
三元:
$something = isset($_GET['something']) ? $_GET['something'] : "failed";
If-else:
if (isset($_GET['something'])) {
$something = $_GET['something'];
} else {
$something = "failed";
}
三項演算子と呼ばれます。 if-elseブロックの省略形です。例についてはこちらをご覧ください http://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary
空の文字列のデフォルトが必要な場合、望ましい方法は次のいずれかです(必要に応じて):
_$str_value = strval($_GET['something']);
$trimmed_value = trim($_GET['something']);
$int_value = intval($_GET['somenumber']);
_
Urlパラメータsomething
rlに存在しないの場合、_$_GET['something']
_ null
を返します
strval($_GET['something'])
-> strval(null)
-> _""
_
変数_$value
_は空の文字列に設定されます。
trim()
がstrval()
よりも優先される場合があります(たとえば、Nameパラメーターで使用する場合があります)intval()
数値のみが期待され、デフォルトがゼロの場合。 intval(null)
-> _0
_考慮すべきケース:
_...&something=value1&key2=value2
_(標準)
_...&key2=value2
_(url $ _GETにパラメーターがない場合、nullを返します)
_...&something=+++&key2=value
_(パラメーターは_" "
_)
これが好ましいアプローチである理由:
$value = isset($_GET['something']) ? $_GET['something'] : '';
より読みやすい$value=isset($_GET['something'])?$_GET['somthing']:'';
更新厳密モードでは、次のようなものが必要になる場合があります。
_$str_value = strval(@$_GET['something']);
$trimmed_value = trim(@$_GET['something']);
$int_value = intval(@$_GET['somenumber']);
_
?三項(条件付き)演算子と呼ばれます: 例