[英]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運算符,它的計算結果為true
或false
。 如果你想要二進制或運算符,你應該使用|
代替。
因為所有不等於零的東西都被視為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.