为了账号安全,请及时绑定邮箱和手机立即绑定

我们什么时候应该为新变量赋值?

我们什么时候应该为新变量赋值?

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 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号