Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP是否本机支持连接和分离?_Php_Javascript - Fatal编程技术网

PHP是否本机支持连接和分离?

PHP是否本机支持连接和分离?,php,javascript,Php,Javascript,Javascript使用了连接运算符和分离运算符 如果左操作数的计算结果为:在合取(a&&b)情况下为false,在析取(a | | b)情况下为true,则返回左操作数;否则返回右操作数 PHP中是否存在等效运算符?PHP支持短路求值,这与JavaScript的连词略有不同。我们经常看到使用短路评估测试PHP中MySQL查询结果的示例(即使不是很好的实践): // mysql_query() returns false, so the OR condition (die()) is execu

Javascript使用了连接运算符和分离运算符

如果左操作数的计算结果为:在合取(a&&b)情况下为false,在析取(a | | b)情况下为true,则返回左操作数;否则返回右操作数


PHP中是否存在等效运算符?

PHP支持短路求值,这与JavaScript的连词略有不同。我们经常看到使用短路评估测试PHP中MySQL查询结果的示例(即使不是很好的实践):

// mysql_query() returns false, so the OR condition (die()) is executed.
$result = mysql_query("some faulty query") || die("Error");
请注意,在PHP中,当布尔运算符的任一侧有一个要求值的表达式时,短路求值可以工作,这将产生一个返回值。然后,仅当左侧为false时,它才会执行右侧。这与JavaScript不同:

简单地做:

$a || $b
将返回一个布尔值
TRUE
FALSE
,如果其中一个为truthy或两者都为FALSE。如果
$a
为falsy,则不会返回
$b
的值:

$a = FALSE;
$b = "I'm b";

echo $a || $b;
// Prints "1", not  "I'm b"
为了回答这个问题,PHP将对这两个值进行布尔比较并返回结果。它不会返回二者中的第一个真实值

在PHP中,更惯用的用法(如果有惯用PHP)是使用三元操作:

$c = $a ? $a : $b;

// PHP 5.3 and later supports
$c = $a ?: $b;
echo $a ?: $b;
// "I'm b"
PHP7的更新 PHP7引入了一种更接近于连接的方法。它特别有用,因为它不需要检查左操作数数组键上的
isset()

$a = null;
$b = 123;
$c = $a ?? $b;
// $c is 123;

Javascript:
“first”| |“second”
返回
“first”
,而PHP
echo(“first”| |“second”)
只返回
1
。PHP不返回左或右操作数,只返回布尔值。我想知道的是,PHP本机是否支持返回实际操作数的功能。@JordanaArsenault刚刚更新了我的答案,将其包括在内,可能是在您键入时。在我看到您的编辑之前提交的。我想我要找的东西不受支持。感谢您的解释/澄清!这里要使用的是三元结构,尽管存在短路:echo($first!=''?$first:$second);谢谢@MathieuDumoulin-我想可能有捷径。