PHP循环与for循环麻烦

时间:2011-11-25 16:40:09

标签: php oscommerce

编辑:知道了,不敢相信我错过了它 -

$ HTTP_POST_VARS不是全局的,将其更改为要传入的参数。

我通常使用$ _POST,但在oscommerce中默认是这样,所以我用它来保持相似性。

我无法使用此代码,我不知道为什么。

   function check_product_available() {

global $cart;
$products = $cart->get_products();

  //product exclusion
    //check to see if the product is in one of the limited categories
    $check_product_query = tep_db_query( $sql = 'SELECT products_id
                                                 FROM discount_coupons_to_products
                                                 WHERE coupons_id="'.tep_db_input( $HTTP_POST_VARS['couponcart'] ).'"' );
    $exlproducts = array();
    if( tep_db_num_rows( $check_product_query ) > 0 ) {
      while( $products = tep_db_fetch_array( $check_product_query ) ) {
        $exlproducts[] = $products['products_id'];
      }
  }
        for ($i=0, $n=sizeof($products); $i<$n; $i++) {
    if( in_array( $products[$i]['id'], $exlproducts ) ) {
      //use this to debug exclusions:
      return false;
    } 
    }
    return true;
  }
  //end product exclusion

我试过移动循环,它仍然总是返回true。我已经回应了产品数组和id在那里并运行sql查询硬编码优惠券ID,它也工作正常。

2 个答案:

答案 0 :(得分:3)

你的for循环毫无意义,因为它只会循环一次。返回值将结束所有其他执行。您可能想要的是在数组中返回false而在所有其他条件下返回true。

for ($i=0, $n=sizeof($products); $i<$n; $i++) {
    if( in_array( $products[$i]['id'], $exlproducts ) ) {
        //use this to debug exclusions:
        return false;
    }
}
return true;

编辑:您真的不应再使用$HTTP_POST_VARS

答案 1 :(得分:1)

得到它......

$ HTTP_POST_VARS不是全局的,将其更改为要传入的参数。