是否可以以某种方式将其重写为更短?
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
计算为返回值;否则,表达式的计算结果为 的计算返回值。因此,如果计算结果为true,则整个表达式的计算结果为的评估值和否则的评估值。expr2
expr1
expr3
isset($_POST['pic_action'])
$_POST['pic_action']
0
简而言之:如果isset($_POST['pic_action'])
为真,$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
下面定义的函数。来自Kohana 的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;
}
更长,但可重复使用:
$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
}
你可以做:
$_POST['pic_action'] = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;