簡體   English   中英

PHP:邏輯運算符:為什么(5 || 3)返回1?

[英]PHP: Logical Operator: Why does (5 || 3) return 1?

在構建一個小型反饋解決方案的同時,人們可以給出一些星星(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 如果你想要二進制或運算符,你應該使用| 代替。

因為所有不等於零的東西都被視為true所以所有的evalations都給出了true ,整數變為1

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

示例-----名稱-----結果
$ a || $ b -------或---------如果$ a或$ b為TRUE,則為TRUE。

PHP ||有所不同 處理而不是其他語言。

在PHP 5 || 7 5 || 7將永遠返回true; || 運算符將始終返回布爾值。

5 || 7 = true;

在其他語言,如JavaScript。 5 || 7 5 || 7將返回5和7 || 1 7 || 1將返回7; || operator將返回被評估為true的參數(或最后一個參數);

5 || 7 = 5;
7 || 1 = 7;
0 || 7 || 1 = 7;
0 || 0 = 0;

在PHP中,您可以通過使用三元運算符來實現相同的功能:

$result = $int ? $int : 1;

如果$ int隱式為真,則$ result為$ int,否則$ result為1;

或者從PHP 5.3開始:

$result = $int ?: 1;

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

來吧,它返回TRUE ,你看到1

嘗試這個

echo TRUE;    //1

您正在尋找的是三元運營商

$feedback->rating = $wire->input->post->rating ?: 1;
                                               ^^

如果設置了,則為您提供該值,否則為您提供實際值1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM