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
4 ответа

Это просто уведомление. Это, скорее всего, означает, что вы не указали индекс product. Думаю, вы определяете $productArr на лету. Возможно, вы хотите сделать это так:

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

Затем:

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


вы должны использовать функцию 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


Я думаю, это то, что вы хотите:

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


И то и другое

$savedProducts[] = $prodArray;

а также

array_push($savedProducts,$prodArray);

будет работать, но PHP-Manual говорит нам, что мы предпочитаем первое решение в этом случае, поскольку для этого требуется еще один вызов функции.

licensed under cc by-sa 3.0 with attribution.