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

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

我們什么時候應該為新變量賦值?

我們什么時候應該為新變量賦值?

PHP
  2022-10-28 10:03:50
給定以下代碼:AND (myTable.field_1 IN ('" . implode("','", $myObj->userStatus) . "')  OR myTable.field_2 IN ('" . implode("','", $myObj->userStatus) . "')  OR myTable.field_3 IN ('" . implode("','", $myObj->userStatus) . "'))";最佳做法是什么以及為什么:1) 按原樣使用。(難看,但不會創建一個只讀的新變量)。2)使其更好地閱讀和維護創建一個變量來保存該值并這樣做:$userStatus = $myObj->userStatus;//Some Code HEreAND (myTable.field_1 IN ('" . implode("','", $userStatus) . "')  OR myTable.field_2 IN ('" . implode("','", $userStatus) . "')  OR myTable.field_3 IN ('" . implode("','", $userStatus) . "'))";在這種情況下創建變量是否有任何“不利因素”?或者它不會影響性能,所以我們應該走“好讀”的道路?
查看完整描述

3 回答

?
守著一只汪

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

首先,您可以將 預計算implode("','", $userStatus)為變量。這樣,您不必多次重復 implode 函數。它更具可讀性并且具有更好的性能。

其次,最重要的是您以錯誤的方式處理數據!這種計算應該在您的數據庫中完成。例如,您已將多對多關系轉換為一對多。這使您的代碼可讀性降低,效率降低。

第三,不要過度設計你的代碼。如果您要進行操作,請在變量中進行操作以提高可讀性而不是提高性能。性能通常取決于算法、結構和設計,而不是定義變量。




查看完整回答
反對 回復 2022-10-28
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

作為一般做法,我不會分配新變量,除非我實際上要以需要它的方式使用它。當然也有例外,可讀性會顯著提高。我認為您的示例根本不符合該閾值。

事實上,我認為你的具體例子,在這里分配另一個變量可能不清楚是什么$userStatus。瀏覽代碼時要跟蹤的是另一件事。

當然,沒有什么“丑陋”的$myObj->userStatus。

無論如何,這里還有其他問題。永遠不要將數據直接連接到 SQL 查詢中。它至少需要轉義,但綁定參數更好。否則,您將面臨一大堆錯誤和安全問題。

如果你使用命名參數,你會發現無論如何你只會使用$myObj->userStatus一次。


查看完整回答
反對 回復 2022-10-28
?
縹緲止盈

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

您應該嘗試以下代碼:


$userStatus = $myObj->userStatus;

//Some Code HEre


$userStatusimp = implode(',', $userStatus);


AND (myTable.field_1 IN ('" .$userStatusimp. "')

  OR myTable.field_2 IN ('" .$userStatusimp . "')

  OR myTable.field_3 IN ('" .$userStatusimp. "'))";


查看完整回答
反對 回復 2022-10-28
  • 3 回答
  • 0 關注
  • 163 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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