2015-06-01 32 views
0

我尝试使用foreach循环更新数组中的值。然后用更新的值打印数组。我在这里发布我的当前代码。请回复示例代码。感谢您。 这里是我的数组:如何通过循环更新数组中的值

[associated_branch] => Array 
       (
        [0] => Array 
         (
          [store_id] => 0 
          [store_name] => Bazar Kolkata 
          [location] => Array 
           (
            [location] => Sonarpur 
           ) 

          [address_line1] => J L N Road 
          [address_line2] => Kolkata 
          [city] => 4 
          [state] => 24 
         ) 

        [1] => Array 
         (
          [store_id] => 16 
          [store_name] => KC DAS 
          [location] => Array 
           (
            [location] => Garia Hat 
           ) 

          [address_line1] => kolkata 
          [address_line2] => 
          [city] => 4 
          [state] => 24 
         ) 

       ) 

,我想:

[associated_branch] => Array 
       (
        [0] => Array 
         (
          [store_id] => 0 
          [store_name] => Bazar Kolkata 
          [location] => Sonarpur 
          [address_line1] => J L N Road 
          [address_line2] => Kolkata 
          [city] => 4 
          [state] => 24 
         ) 

        [1] => Array 
         (
          [store_id] => 16 
          [store_name] => KC DAS 
          [location] => Garia Hat 
          [address_line1] => kolkata 
          [address_line2] => 
          [city] => 4 
          [state] => 24 
         ) 

       ) 

我的SQL:

$assoBrSql="SELECT store_id, store_name, location, address_line1, address_line2, city, state FROM ".DB_MY_PREFIX."my_web_stores WHERE store_id IN($row[branch_ids]) AND cur_status=1 && is_more_branch =1 AND associated_branch IS NOT NULL"; 
       $branches = $db->ExecuteQuery($assoBrSql); 
       $row['associated_branch']=$branches; 

       foreach ($row['associated_branch'] as $key => $value) { 

        $locsql="SELECT location FROM " .DB_MY_PREFIX. "my_localities WHERE location_id='".$value['location']."'"; 
        $locrows=$db->ExecuteQuery($locsql); 
        $row['associated_branch'][$key]['location']=$locrows[0]; 

       } 

如何建立呢?

+0

你为什么不使用你的查询连接上额外的查询发出了在初始每条记录的,而不是结果? –

回答

0

你应该只需要改变:

$row['associated_branch'][$key]['location']=$locrows[0]; 

$row['associated_branch'][$key]['location']=$locrows[0]['location']; 

您目前正在追加第二个查询,这是一个包含单个元素“位置”的阵列的结果。

0

如果分支可以有多个位置,那么您可以更改初始查询以使用带有groupconcat的子查询来获取所有位置。这样

$assoBrSql="SELECT store_id, store_name, location, address_line1, address_line2, city, state, (SELECT GROUP_CONCAT(a.location) as locations FROM " .DB_MY_PREFIX. "my_localities a WHERE a.location_id=location) as locations FROM ".DB_MY_PREFIX."my_web_stores WHERE store_id IN($row[branch_ids]) AND cur_status=1 && is_more_branch =1 AND associated_branch IS NOT NULL"; 
       $branches = $db->ExecuteQuery($assoBrSql); 
       $row['associated_branch']=$branches; 

代码的东西没有测试写在编辑器中,幸而没有错别字等;)