これをどうにか短く書き直すことはできますか?
if (isset($_POST['pic_action'])){
$pic_action=$_POST['pic_action'];
}
else {
$pic_action=0;
}
どこかで見たことあるのに忘れちゃった(/_;)
ところで、必要に応じてコードも説明してください!
ありがとう
これをどうにか短く書き直すことはできますか?
if (isset($_POST['pic_action'])){
$pic_action=$_POST['pic_action'];
}
else {
$pic_action=0;
}
どこかで見たことあるのに忘れちゃった(/_;)
ところで、必要に応じてコードも説明してください!
ありがとう
条件演算子?:
を使用できます:
$pic_action = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;
の評価された戻り値がtrueの場合、条件演算子式expr1 ? expr2 : expr3
は の戻り値に評価されます。それ以外の場合、式は の評価された戻り値に評価されます。そのため、 ifがtrueに評価された場合、式全体が評価された値に評価され、それ以外の場合に評価された値になります。expr2
expr1
expr3
isset($_POST['pic_action'])
$_POST['pic_action']
0
要するに:isset($_POST['pic_action'])
が trueの場合、 and$pic_action
の値を保持します。$_POST['pic_action']
0
ガンボの答えはおそらく最良の方法です。
次のように書くこともできます。
$pic_action = 0;
if (isset($_POST['pic_action'])){
$pic_action=$_POST['pic_action'];
}
$pic_action=(isset($_POST['pic_action']))?($_POST['pic_action']):0;
$pic_action = array_get($_POST, 'pic_action', 0);
上記の行には、array_get
以下に定義された関数が必要です。コハナのArr
クラスからのソース。非常に小さくて一般的な機能。すべての配列で使用できます$_GET
。
/**
* Retrieve a single key from an array. If the key does not exist in the
* array, the default value will be returned instead.
*
* @param array array to extract from
* @param string key name
* @param mixed default value
* @return mixed
*/
function array_get(array $array, $key, $default = NULL)
{
return isset($array[$key]) ? $array[$key] : $default;
}
できるよ:
$_POST['pic_action'] = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;
長くなりますが、再利用可能です:
$pic_action = QueryPost('pic_action', 0);
function QueryPost($name, $default='', $valid=false) {
if (!isset($_POST[$name])) return $default;
if (($valid) and (empty($_POST[$name]))) return $default;
return $_POST[$name];
}
または、作業中に QueryPost 関数に一種の検証を実行させることもできます。
$pic_action = QueryPost('pic_action', 'int', 0);
function QueryPost($name, $rule, $default='', $valid=false) {
// this shouldn't be too hard to write
}