从另一个 PHP 函数调用 PHP 函数的逻辑错误

Posted

技术标签:

【中文标题】从另一个 PHP 函数调用 PHP 函数的逻辑错误【英文标题】:error in logic calling a PHP function from another PHP function 【发布时间】:2012-06-30 22:38:51 【问题描述】:

我们有一个“gotItem”函数,如果在“on_hand”值为“1”的项目上运行,它也应该调用“outItem”函数。出于某种原因,“gotItem”函数正在调用“outItem”函数,无论“on_hand”值是“1”还是“0”。任何想法为什么?代码如下

function gotItem( $user_item_id, $user_id ) 

   $user_item = $this->getUserItem( $user_id, $user_item_id );
   if ( ( ! is_null( $user_item ) ) && ( $user_item['on_hand'] = '1' ) )
   $this->outItem( $user_item_id, $user_id );

【问题讨论】:

【参考方案1】:

= 用于赋值,== 用于检查

  function gotItem( $user_item_id, $user_id ) 
    $user_item = $this->getUserItem( $user_id, $user_item_id );
    if ( ( ! is_null( $user_item ) ) && ( $user_item['on_hand'] == '1' ) )
    $this->outItem( $user_item_id, $user_id );

【讨论】:

【参考方案2】:

你的比较是错误的:

$user_item['on_hand'] = '1' 

应该是:

$user_item['on_hand'] == '1' 

由于分配,第一个总是真实的。遗憾的是,这是一个非常常见的错误,但您可以将条件写成:

'1' = $user_item['on_hand']

这将导致错误,因为您不能使用文字作为左手表达式。代码中有问题的直接迹象:)

【讨论】:

+1 用于解决一个非常常见且经常被“作者”问题忽略的问题

以上是关于从另一个 PHP 函数调用 PHP 函数的逻辑错误的主要内容,如果未能解决你的问题,请参考以下文章

调用在另一个命名空间中定义的 PHP 函数,不带前缀

为啥调用未定义函数时没有 PHP 错误?

从另一个类调用函数时出现致命错误

GRPC状态码

PHP当我调用函数时我得到了致命的错误

SQL 函数调用中的 PHP 参数错误