2013-02-20 202 views
1

我有一个网站在PHP中开发,我有一个函数,我想在其他数组内创建一个数组。 我的查询是这样的(我使用cakephp,但在这种情况下只是一个数组问题,不要告诉我使用包含或类似的东西从cakephp,因为是一个大的查询,我需要构造我的查询和我的数组在这种模式下)推阵列在另一个阵列

我的数组$ product_ingredient包含一些值。

foreach ($product_ingredient as $key) {   
       $ingredient_level1 = $this->ProductIngredientVersion->query('SELECT * FROM ingredients_ingredients 
       WHERE ingredients_ingredients.ingredient_id = :ingredient_id 
       AND ingredients_ingredients.product_id = :id 
       AND ingredients_ingredients.version_id = :version_id 
       AND ingredients_ingredients.level = 1', array('id' => $id, 'ingredient_id' => $key['products_ingredients']['ingredient_id'], 'version_id' => $key['products_ingredients']['version_id'])); 


       foreach($ingredient_level1 as $key2){ 
        $ingredient_level2 = array($this->ProductIngredientVersion->query('SELECT * FROM ingredients_ingredients 
        WHERE ingredients_ingredients.ingredient_id = :ingredient_id 
        AND ingredients_ingredients.product_id = :id 
        AND ingredients_ingredients.version_id = :version_id 
        AND ingredients_ingredients.level = 2', array('id' => $id, 'ingredient_id' => $key2['ingredients_ingredients']['ingredient2_id'], 'version_id' => $key2['ingredients_ingredients']['version_id']))); 
        array_push($ingredient_level1, $ingredient_level2); 
       } 
       array_push($ingredient_ingredient, $ingredient_level1); 
      } 

结果是:

array(
    (int) 0 => array(
     (int) 0 => array(
      'ingredients_ingredients' => array(
       'id' => '34', 
       'level' => '1' 
      ) 
     ), 
     (int) 1 => array(
      (int) 0 => array(
       (int) 0 => array(
        'ingredients_ingredients' => array(
         'id' => '35', 
         'level' => '2' 
        ) 
       ) 
      ) 
     ) 
    ) 

但我想这个结果

array(
    (int) 0 => array(
     (int) 0 => array(
      'ingredients_ingredients' => array(
       'id' => '34', 
       'level' => '1', 
       array(
        'ingredients_ingredients' => array(
         'id' => '35', 
         'level' => '2' 
        ) 
      ) 
     ) 
    ) 

我该如何解决?

+0

你在寻找'array_merge'(http://php.net/manual/en/function.array-merge.php)吗?我不确定你要用样本数组去做什么,因为你要创建的数组是无效的(多个键名相同,等等) – 2013-02-20 22:43:47

+0

array_merge只追加数组我想要数组在另一个数组内@Dave – 2013-02-20 22:46:17

+0

在你想要的结果代码中,我相信你有一个额外的数组('修改后的'行',并且应该用一个逗号代替它)正确吗? – DACrosby 2013-02-20 22:48:05

回答

2

通过

array_push(
    $ingredient_ingredient[0][0]['ingredients_ingredients'], 
    $ingredient_level1 
); 

这推动所述阵列到适当的级联级替换

array_push($ingredient_ingredient, $ingredient_level1); 

。但是,如果您无法在其他地方修改SQL或数组结构,那么很有可能这是最有效的方法。