- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在某些语言中,您可以这样做
$a = $b OR $c OR die("无值(value)");
也就是说,OR 将短路,仅从左到右评估值,直到找到真值。但此外,它返回 被评估的实际值,而不仅仅是 true
。
在上面的例子中,在 PHP 中,如果 $a
或 $b
是非假值,否则它将死亡
。
所以写了一个函数first
,用作
$a = first($a, $b, die("no value"));
返回 $a
或 $b
的 值。但是,它不会短路——它总是会死
。
PHP中是否有短路OR
返回实际值?
编辑:我给出的例子有一些很好的答案,但我想我的例子并不是我的意思。让我澄清一下。
$a = func1() OR func2() OR func3();
这些函数中的每一个都进行了非常非常激烈的计算,所以我只想对每个表达式最多计算一次。对于第一个返回真值的人,我希望将实际值存储在 $a
中。
我认为我们可以排除编写函数,因为它不会短路。并且条件运算符的答案将对每个表达式进行两次评估。
最佳答案
不,没有,在我看来,这是 Rasmus Lerdorf 在设计 PHP 时做出的错误决定之一,大多数人为了溺爱不称职的开发人员而阻碍了有能力的开发人员。
编辑:在 PHP 5.3 及更高版本中,您可以编写 $a = $b ?: $c
,甚至可以编写 $a = $b ?: $c ?: $d
。仍然不如非脑损伤的逻辑运算符,但它是一些东西。
关于php - PHP中是否有短路或返回最左边的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1539204/
我正在开发一个需要在屏幕上查找对象的程序,到目前为止工作正常,但我遇到了多显示器配置问题。 GraphicsEnvironment.getLocalGraphicsEnvironment().getS
使用 mySql,我想列出客户对特定产品类别进行的所有购买。 所以,我有 3 个表:客户 (idCustomer, Name)、类别 (idCategory, CategoryName) 和订单 (i
我的网站上有一个关于 background-size:cover 的小问题我一直在 Firefox 中测试它,但是当我在谷歌浏览器中加载页面时,我在左边得到 1px 的白色。当我使用 backgrou
我已经搜索了几个小时来找到解决我的问题的方法,但没有成功。我遇到的问题是两个按钮的垂直堆叠。 这就是我想要做的:它说按钮在这里两次是我试图放置按钮的地方,但我所能做的就是让它们水平排列而不是垂直排列。
我有一个包含多个元素的导航栏。 Left1 Left2 Left3 Right1 Right2 Right3 我不知道如何将“fixedLef
您好,我正在尝试让 2 个 div 在左侧与右侧对齐。 #div1 #div2 #div1 #div2 #div3 #div2 #div3 #div3 诀窍是当浏览器窗口变小时,我希望#div2 位于
body { font-family: Arial, Helvetica, sans-serif; font-size: 13px;
这个问题在这里已经有了答案: In CSS Flexbox, why are there no "justify-items" and "justify-self" properties? (6
这是我的代码的 jsfiddle 链接: https://jsfiddle.net/Krisalay/zvxxeagh/ 我的 HTML 代码是: MESSAGE 1
所以我有 10 个复选框,每个标签都取自数组中相应的索引。我正在使用 ng-repeat 来展示它们: {{entity}}
我是一名优秀的程序员,十分优秀!