PHP:逻辑运算符:为什么 (5 || 3) 返回 1?

标签 php logical-operators

在构建一个小的反馈解决方案时,人们可以给多个星(0 到 5 之间),我注意到所有用户提交的评分都只存储了 1 星。

我自己试了一下,提交了5星,后台还是显示1星。

所以我查看了代码,这是导致问题的部分:

$feedback->rating = ($wire->input->post->rating || 1);

实际上 || 运算符并没有按照我的预期去做。 事实上,它每次都只返回 1(除非两边都是 $false)。

检查下面我的示例代码:

$example1 = ($true || 5);
$example2 = ($false || 5);
$example3 = ($false || $false);
$example4 = (5 || 0);
echo $example1."\n";
echo $example2."\n";
echo $example3."\n";
echo $example4."\n";

我也贴在这里:https://eval.in/514978 .

我的假设是,PHP 会尝试根据给定的元素将语句转换为整数(0 或 1),这是真的吗?

我经常在 JavaScript 中使用 || 运算符,我可以直接输入

var i = myFunction() || "default";

这将检查 myFunction() 是否返回 bool-ish 值,如果不是则只使用右侧值(而不是将所有内容都转换为 int)。

最佳答案

|| 是 PHP 中的 or 运算符,它的计算结果为 truefalse。如果您想要二进制或运算符,则应改用 |

因为所有不等于 0 的东西都被视为 true,所以所有的评估都给出 true,作为整数变为 1 是有道理的。

您可以在此处查看更多信息:http://php.net/manual/en/language.operators.logical.php

Example ----- Name -----Result
$a || $b ------- Or ---------TRUE if either $a or $b is TRUE.

关于PHP:逻辑运算符:为什么 (5 || 3) 返回 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35272617/

相关文章:

javascript - WordPress 自动完成搜索 : how to connect query file of custom table?

java - 具有多个逻辑运算符的三重条件 Do-While 循环

php - 将 key$ 和 $value 插入数据库表单 foreach

php - 单击后退按钮而不是 $_POST 值时读取 session

php - 重写 PHP 中的魔术方法

python - 'and' 和 'or' 的操作顺序是什么?

python - 从 python 上的 dict 获取集合运算符

与后增量和逻辑运算符混淆?

c++ - 在 switch 语句中使用算术和逻辑运算符

php - 缓存一个 302MB 的对象