2014-02-21 95 views
-2

這是基本的,但由於某種原因它將我絆倒!PHP - 基本陣列合併

我希望有一個數組結構:

Array 
(
    [0][product] => Array 
     (
      [product_id] => 128160 
      [product_score] => 5 
     ) 

    [1][product] => Array 
     (
      [product_id] => 128161 
      [product_score] => 5 
     ) 

    [2][product] => Array 
      (
       [product_id] => 128162 
       [product_score] => 5 
      ) 

    ) 

但我似乎不能正確地推到這一點,

$productArr['product'] = array("product_id" => $product_id,"product_score" => $score); 

$savedProducts = array_merge($savedProducts, $productArr); 

給我:

Notice: Undefined index: product 
+0

你想要的輸出是什麼? – naththedeveloper

+0

$ savedProducts [] ['product'] = $ productArr ['product']; – sanj

+0

我認爲你需要爲你的數組結構做的事情是'$ savedProducts [] = $ productArr' – edmondscommerce

回答

1

這只是一個通知。這很可能意味着你沒有定義product索引。我想你正在動態定義$productArr。也許你想這樣做,是這樣的:

$productArr = array(
    'product' => array("product_id" => $product_id,"product_score" => $score) 
); 

然後:

array_push($savedProducts, $productArr); 
// or ever more simple 
$savedProducts[] = $productArr; 
0

我想這是你想要什麼:

$productArr[]['product'] = array("product_id" => $product_id,"product_score" => $score); 

的然後合併,或將其存儲在任何你想要的其他變種,但要小心。你正在合併多級數組,你需要遞歸合併。這將這樣的伎倆:

function merge_r (&$array1, &$array2){ 
      if (self::is($array1) && !self::is($array2)) return $array1; 
     else if (!self::is($array1) && self::is($array2)) return $array2; 
     else if (!self::is($array1) && !self::is($array2)) return; 
     else if (self::is($array1) && self::is($array2)) { 
      $merged = $array1; 
    foreach ($array2 as $key => &$value) { 
     if (self::is ($value) && isset ($merged [$key]) && self::is ($merged [$key]))  
     $merged [$key] = array_merge_r ($merged [$key], $value);  
     else $merged [$key] = $value; 
     }  
     } 
    return $merged; 
} 

然後合併: $ savedProducts = merge_r($ savedProducts,$ productArr);

0

兩個

$savedProducts[] = $prodArray; 

array_push($savedProducts,$prodArray); 

將工作,但PHP-Manual告訴我們更喜歡在這種情況下,第一個解決方案,因爲它需要一個較少的函數調用。