2012-05-23 34 views
0

我在电子商务项目(内置于Code Igniter中)中有两个对象数组,其中一个是产品对象数组,另一个是销售项目对象数组,具有产品ID和折扣金额。我需要比较阵列,以便我可以在正在销售的物品中放置新的价格,但似乎无法正确编码循环。这是我目前的代码:比较两个对象数组并替换值

private function checkSalesProducts($query) { //$query is an array of product objects 

    $this->db->select("sale_product, sale_discount"); 
    $salesItems = $this->db->get("sale_items"); 

    foreach($salesItems->result() as $salesItem) 
    { 

     for($i=0; sizeof($query); ++$i) 
     { 

      if($salesItem->sales_product == $query[$i]->prod_id) 
      { 

       $query[$i]->prod_price = $query[$i]->prod_price * (1 - $salesItem->sales_discount); 
       $query[$i]->sale_item = true; 
       break; 

      } 

     } 

    } 

    echo "<pre>"; 
    print_r($query); 
    echo "</pre>"; 

} 

任何想法?

+0

双循环导致n * n的计算。但是,我认为这不是你的主要问题。我不知道代码点火器,你确定'$ salesItem-> sales_product'是产品ID还是产品?你的代码正在工作还是只是一个问题来改进它? –

回答

1

for()应该

for($i = 0; $i < sizeof($query); $i++) 

你的脚本应该在此刻定格,因为你告诉它循环而sizeof($query) > 0,它总是有,因为你没有在循环修改。

+0

就是这样:)我认为这只是一个需要一双新鲜眼睛的例子 –