PHP 中是否存在更短的 if 语句?

发布于 2024-08-17 02:37:37 字数 218 浏览 13 评论 0原文

是否有可能以某种方式将其重写得更短?

if (isset($_POST['pic_action'])){
  $pic_action=$_POST['pic_action'];
}
else { 
  $pic_action=0;
}

我在某处看到过但忘记了...:/

顺便说一句,如果您愿意,请也解释一下您的代码!

谢谢

Is it possible to rewrite this to be shorter somehow?

if (isset($_POST['pic_action'])){
  $pic_action=$_POST['pic_action'];
}
else { 
  $pic_action=0;
}

I have seen it somewhere but forgot... :/

BTW, please explain your code also if you like!

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

梦行七里 2024-08-24 02:37:37

您可以使用 条件运算符 ? :

$pic_action = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;

条件运算符表达式 expr1 ? expr2 : 如果 expr1 的计算返回值为 true,则 expr3 计算为 expr2 的返回值;否则,表达式的计算结果为 expr3 的计算返回值。因此,如果 isset($_POST['pic_action']) 计算结果为 true,则整个表达式的计算结果为 $_POST['pic_action']< /code> ,否则为 0 的评估值。

简而言之:如果 isset($_POST['pic_action']) 为 true,$pic_action 将保存 $_POST['pic_action']< 的值/code> 和 0 否则。

You could use the conditional operator ?::

$pic_action = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;

The conditional operator expression expr1 ? expr2 : expr3 evaluates to the return value of expr2 if the evaluated return value of expr1 is true; otherwise the expression evaluates to the evaluated return value of expr3. So if isset($_POST['pic_action']) evaluates to true, the whole expression evaluates to the evaluated value of $_POST['pic_action'] and to the evaluated value of 0 otherwise.

So in short: if isset($_POST['pic_action']) is true, $pic_action will hold the value of $_POST['pic_action'] and 0 otherwise.

向地狱狂奔 2024-08-24 02:37:37

Gumbo的回答可能是最好的方法。

也可以写成:

$pic_action = 0;
if (isset($_POST['pic_action'])){
    $pic_action=$_POST['pic_action'];
}

Gumbo's answer is probably the best way.

It can also be written as:

$pic_action = 0;
if (isset($_POST['pic_action'])){
    $pic_action=$_POST['pic_action'];
}
原谅过去的我 2024-08-24 02:37:37
$pic_action=(isset($_POST['pic_action']))?($_POST['pic_action']):0;
$pic_action=(isset($_POST['pic_action']))?($_POST['pic_action']):0;
看春风乍起 2024-08-24 02:37:37
$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 = array_get($_POST, 'pic_action', 0);

The line above requires the array_get function defined below. Source from Kohana's Arr class. Very small and generic function. Can be used on all arrays, e.g. $_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;
}
去了角落 2024-08-24 02:37:37

更长,但可重用:

$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
}

Longer, but reusable:

$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];
}

Or you could have the QueryPost function do a form of validation while you're at it.

$pic_action = QueryPost('pic_action', 'int', 0);

function QueryPost($name, $rule, $default='', $valid=false) {
    // this shouldn't be too hard to write
}
一瞬间的火花 2024-08-24 02:37:37

你可以这样做:

$_POST['pic_action'] = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;

You can do:

$_POST['pic_action'] = isset($_POST['pic_action']) ? $_POST['pic_action'] : 0;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文