PHP - 基本数组合并

时间:2014-02-21 11:35:26

标签: php arrays

这是基本的,但由于某种原因,它难倒我!

我希望有一个数组结构:

    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 

4 个答案:

答案 0 :(得分:3)

你必须使用array_push函数

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

array_push($ savedProducts,$ productArr);

http://php.itronic.at/manual/en/function.array-push.php

答案 1 :(得分:1)

这只是一个通知。这很可能意味着您没有定义product索引。我想你是在动态定义$productArr。也许你想这样做:

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

然后:

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

答案 2 :(得分:0)

我认为这就是你想要的:

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

然后合并它或将其存储在您想要的任何其他var中但要小心。如果要合并多级数组,则需要递归合并。这样就可以了:

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);

答案 3 :(得分:0)

两个

$savedProducts[] = $prodArray; 

array_push($savedProducts,$prodArray);

会起作用,但PHP-Manual告诉我们在这种情况下更喜欢第一个解决方案,因为它需要少一个函数调用。