php - 我可以在 if 语句中串联函数并返回单个变量吗?

标签 php if-statement

我很好奇是否可以在 if 语句中串联一个函数的几种可能性,将它们链接到单个变量并返回有效的变量(如果有)。

以下内容不起作用,但它演示了这个想法。我希望下面的代码返回 2,因为函数 myFn() 仅在将 2 传递给它时才返回 true。

但是下面的结果返回true: 1

if ($b = myFn(1) || $b = myFn(2) || $b = myFn(3)) {
    echo 'true: ' . $b;
} else {
    echo 'false: ' . $b;
}

function myFn($a) {
    if ($a == 2) return $a;
    return false;
}

除了添加一系列 elseif 之外,有没有一种方法可以将函数串入一系列 OR 中,同时只返回成功的一个?

键盘:http://codepad.org/ldiCxY4j

最佳答案

只需将每个作业括在括号中即可:

(($b = myFn(1)) || ($b = myFn(2)) || ($b = myFn(3)))

参见:PHP operator precedence

当使用logical时运算符,PHP 将结果强制为 bool 值。如果没有额外的括号,它会回显 '1',因为回显会将 true 强制为 '1'

使用循环可能会更好:

/**
 * Get the first $array value that passes the $test, or else null.
 * @return mixed|null 
 */
function find ($array, $test) {
    foreach ($array as $index => $value) {
        if (call_user_func($test, $value, $index, $array))
            return $value;
    }
}

关于php - 我可以在 if 语句中串联函数并返回单个变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15128217/

相关文章:

php - 在 PHP 中询问 mysql_num_rows 是否正确的方法

php - MySQL - 如何在同一查询中使用 ROLLUP 和 ORDER BY

字符串比较中的 Bash glob

r - 按条件从长格式数据集中提取特定行/采用长格式数据进行生存分析

javascript - JS "If & else"未正确响应

javascript - 在 if 语句条件字段中传递函数

php - html 和 css 中的选项卡式输入

php - 根据文本输入更改选项值

php - fatal error : Call to a member function query() on null

java - 关于else if实现的问题