这是基本的,但由于某种原因,它难倒我!
我希望有一个数组结构:
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 :(得分:3)
你必须使用array_push函数
$ productArr ['product'] = array(“product_id”=> $ product_id,“product_score”=> $ score);
array_push($ savedProducts,$ productArr);
答案 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告诉我们在这种情况下更喜欢第一个解决方案,因为它需要少一个函数调用。