【问题标题】:error in logic calling a PHP function from another PHP function从另一个 PHP 函数调用 PHP 函数的逻辑错误
【发布时间】: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 );

【问题讨论】:

    标签: php function logic


    【解决方案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 用于解决一个非常常见且经常被“作者”问题忽略的问题
      猜你喜欢
      • 2012-01-03
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多