相关疑难解决方法(0)

PHP中的C#的空合并运算符(??)

在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)

php ternary-operator null-coalescing-operator php-7

49
推荐指数
4
解决办法
1万
查看次数

在foreach循环中使用函数是否缓存结果,或每次调用函数?

在以下代码中:

function a(){
    echo 'a';
    return array(1,2,3,4);
}

foreach(a() as $t){
    echo $t;    
}
Run Code Online (Sandbox Code Playgroud)

我们可以看到a()只被调用一次,似乎返回的值被缓存了...
但是后来我看到了这个争论(见问题的评论)我错过了什么?

php

21
推荐指数
1
解决办法
3183
查看次数

PHP:如果一个变量空白,如何将变量分配给两个字符串之一?

我想知道为什么这不能分配一个字符串$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?现在,我只是被每个地方使用的数百个额外字符所困扰.:) 谢谢!

php string boolean compare variable-assignment

6
推荐指数
3
解决办法
4310
查看次数

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)

以上任何一个,我认为都不够简洁。

我盲目地寻找任何答案,寻找语句或内置函数来简化工作。但尝试了多种方法后,我都找不到答案。

所以请帮忙。

php syntax function

4
推荐指数
1
解决办法
3798
查看次数

更快$ foo?$ foo:'bar'

一行代码说了很多话:

$foo = false;
$bar = $foo ? $foo : 'bar';
/* $bar == 'bar' */

$foo = 'foo';
$bar = $foo ? $foo : 'bar';
/* $bar == 'foo' */
Run Code Online (Sandbox Code Playgroud)

有没有更快的方式说"如果某些东西不是假的,那么就不要改变它(如果$foo不是false那么它会保持不变,否则,我们会改变它")?

php ternary-operator

2
推荐指数
2
解决办法
1524
查看次数