【发布时间】:2012-10-09 15:28:25
【问题描述】:
此代码有效:
$foo = getFoo();
if (!$foo) $foo = getBar();
if (!$foo) $foo = getJiggy();
if (!$foo) $foo = getWithIt();
我以为我在某处看到了逻辑运算符的简化:
$foo = (getFoo() || getBar() || getJiggy() || ...);
我认为第一个 true 语句会通过,但它只是将 $foo 设置为布尔值 true 而不是 getFoo()、getBar() 等的返回值。
有没有像我想的那样简化?
【问题讨论】:
-
您可能会想到经典的
myfunc() or die()语句。无论如何,不,没有办法做你想做的事。$foo = getFoo() || $foo = getBar()...会起作用,但是,嗯。 -
你到底想用这个讨厌的东西解决什么问题? :) 需要有更好的方法...
-
您可能正在考虑 JavaScript 与
||运算符的合并行为。您发布的内容可读性很强,应该保持原样。 -
好吧,我的代码正在寻找一个 imageURL,但如果 imageURL 不存在,它会在不同的(古老的)地方寻找它。我的代码可能已经足够好,但我很好奇如果我有多个其他地方可以查看是否有更好的方法。在后一种情况下,我可能只是使用循环。
-
如果您正在寻找图像 URL - 为什么不将所有函数调用组合成一个新函数来处理所有可能的结果并使用类似
$foo = getRealFoo();
标签: php logical-operators