在PHP中是否有像??
C#一样的三元运算符?
??
在C#中是干净和短,但在PHP中,你必须做的事情如下:
// This is absolutely okay except that $_REQUEST['test'] is kind of redundant.
echo isset($_REQUEST['test'])? $_REQUEST['test'] : 'hi';
// This is perfect! Shorter and cleaner, but only in this situation.
echo null? : 'replacement if empty';
// This line gives error when $_REQUEST['test'] is NOT set.
echo $_REQUEST['test']?: 'hi';
Run Code Online (Sandbox Code Playgroud) 在以下代码中:
function a(){
echo 'a';
return array(1,2,3,4);
}
foreach(a() as $t){
echo $t;
}
Run Code Online (Sandbox Code Playgroud)
我们可以看到a()只被调用一次,似乎返回的值被缓存了...
但是后来我看到了这个争论(见问题的评论)我错过了什么?
我想知道为什么这不能分配一个字符串$separator
:
$separator = $options['title-separator'] || ' | ';
Run Code Online (Sandbox Code Playgroud)
在其他地方,$ option已分配给某些文本或空字符串.(实际上,在我的现实生活中,它是一些文字或错误,但无论如何......).$ separator是TRUE而不是字符串.
以下内容实现了我想要的,但似乎不必要地冗长:
$separator = ( $s = $options['title-separator'] ) ? $s : ' | ';
Run Code Online (Sandbox Code Playgroud)
我来自JavaScript,这两个例子都有相同的结果,这对我来说是合乎逻辑的.为了理解这一点,我需要了解哪些PHP?现在,我只是被每个地方使用的数百个额外字符所困扰.:) 谢谢!
众所周知,如果我们使用 javascript 或 python,我们可以使用下面的语句来获取变量或其默认值。
// javascript
alert(a || 'default');
# python
print(a or 'default');
Run Code Online (Sandbox Code Playgroud)
在 php 中,我们可能需要调用以下命令:
echo $a ? $a : 'default';
Run Code Online (Sandbox Code Playgroud)
如果 $a 是一个很长的语句,情况就更糟了:
echo (
we_made_many_calculation_here_and_this_is_the_result() ?
we_made_many_calculation_here_and_this_is_the_result() :
'default'
);
Run Code Online (Sandbox Code Playgroud)
或者
var $result = we_made_many_calculation_here_and_this_is_the_result();
echo $result ? $result : 'default';
Run Code Online (Sandbox Code Playgroud)
以上任何一个,我认为都不够简洁。
我盲目地寻找任何答案,寻找语句或内置函数来简化工作。但尝试了多种方法后,我都找不到答案。
所以请帮忙。
一行代码说了很多话:
$foo = false;
$bar = $foo ? $foo : 'bar';
/* $bar == 'bar' */
$foo = 'foo';
$bar = $foo ? $foo : 'bar';
/* $bar == 'foo' */
Run Code Online (Sandbox Code Playgroud)
有没有更快的方式说"如果某些东西不是假的,那么就不要改变它(如果$foo
不是false
那么它会保持不变,否则,我们会改变它")?