簡體   English   中英

不同數據類型之間的php邏輯運算符“或”

[英]php logical operator 'or' between different data types

<?php

 $sample = (False or 436);
 echo $sample;
?>

我嘗試使用此代碼來識別並了解操作符優先級對代碼的影響。 但是我對得到的答案感到困惑。

 <?php

 $sample = (False or 436);
 echo $sample;
?>

給出答案為1

<?php

 $sample = (True or 436);
 echo $sample;
?>

也給1

 <?php

 $sample = False or 436;
 echo $sample;
?>

什么也沒給。

如我所見,我旁邊放的是or答案是1

PS我在http://sandbox.onlinephpfunctions.com/這個在線編輯器上嘗試過它們。

我需要知道背后的實際概念。

其背后的原因是所謂的運算符優先級。 如果刪除括號,則賦值$sample = false優先於or 436函數。 結果為echo false ,不輸出任何內容。 因此,在大多數情況下,您應該使用|| 運算符。

更多信息: http : //php.net/manual/en/language.operators.precedence.php

您可能需要閱讀PHP類型比較表以及布爾文檔 請特別注意Fred Koschara在頂部注釋中的注釋,該注釋說明OR運算符的優先級低於賦值運算符。 您可能正在尋找使用||。 代替OR,例如|| 運算符執行相同的操作,但優先級更高。

作為我得到的所有答案,我可以在發布的內容中找到所有答案。 我認為這可能會有所幫助。

 <?php 
  $var1 = TRUE; 
  $var2 = FALSE; 
  $var3 = 123;


  $x = (int)$var2 or $var3;
  echo $x;// $x assigned to $var2 and type cast into int-display 0

  $y = ($var2 or $var3);
  echo $y;//operation inside the () returns true. so it prints 1

  $n = ($var2 or $var2);
  echo $n;//operation inside the () returns false.It concider as NULL. display nothing
  echo (int)$n;//print numerical value for false-0

  $z = $var2;
  echo $z;//returns 0. It is considered as NULL. so display nothing

 ?>

這是我真正期望的確切答案。 謝謝。

暫無
暫無

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

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