亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果第一個參數的計算結果為 false,php 是否會計算 or 語句的第二個參數?

如果第一個參數的計算結果為 false,php 是否會計算 or 語句的第二個參數?

PHP
元芳怎么了 2023-07-08 22:14:35
所以我的問題是關于 php 在 or 語句采用兩個函數的情況下的行為。當第一個函數的計算結果為 true 時,第二個函數是否仍有可能被執行?我希望下面的代碼可以澄清我的意思:$dbh->startTransaction();$stmt = $dbh->prepare("DELETE FROM foo WHERE id=:id");$stmt->bindParam(':id', $id, PDO::PARAM_INT);if (!$stmt->execute() || !bar($id)) {    $dbh->rollBack();}我想確定的是,執行失敗時永遠不會調用bar()它。$stmt我知道在某些語言中 or 語句會在評估為 true 時返回 true !$stmt->execute(),并且我可以確定除非bar()評估!$stmt->execute()為 false(意味著$stmt->execute()評估為 true 并且查詢成功),否則不會調用該語句。我在 php 中是否有這種確定性,或者服務器是否有可能同時或以相反的順序進行評估$stmt->execute(),bar($id)并以這種方式對我的數據庫造成嚴重破壞?我假設我也能夠將我在這里得到的任何答案應用到 and 聲明中。如果情況并非如此,請告訴我。
查看完整描述

1 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

邏輯運算符||意味著如果第一個表達式的計算結果為 true,則不會執行第二個表達式。如果您使用or,|則即使第一個表達式的計算結果為 true,也會計算第二個表達式。

if?($expression?||?$expression)?{
????//
????}

在這里,如果第一個表達式的計算結果為 true,則不||會讓第二個表達式計算并且流程在if塊中繼續。僅當第一個表達式變為 時才計算第二個表達式false。

這個布爾運算與主要編程語言中的解釋完全一樣,而不僅僅是在 php 中。如果您想深入了解,請訪問php Doc 中的邏輯運算符。

http://img2.sycdn.imooc.com/64a96f740001a71c06520209.jpg

根據優先規則,邏輯運算符||具有左關聯性,規定左表達式始終首先計算,如果左表達式失敗,則將計算右表達式。



查看完整回答
反對 回復 2023-07-08
  • 1 回答
  • 0 關注
  • 147 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號