Мне нужно добавить значения ассоциативного массива к другому.
$a = array(4=>2,5=>5); $b = arrray(array(0=>0,1=>4,2=>10,3=>1000),array()...);
То, что я ожидаю получить, – это третий массив ($ c), такой как тот, который ниже, где содержимое $ b следует за содержимым $ a:
$c = array(array(4=>2,5=>5,0=>0,1=>4,2=>10,3=>1000),array(4=>2,5=>5....));
Это то, что я написал (не работает):
$c = array(); foreach ($possible_opp_action as $sub) { $c[] = array_push($to_merge,array_values($sub)); }
$a = array(4=>2,5=>5); $b = array(array(0=>0,1=>4,2=>10,3=>1000), array(0=>0,1=>40,2=>100,3=>2000), array(4=>10) ); $c = array(); foreach($b as $tmp) { $c[] = $a+$tmp; } var_dump($c);
В отличие от array_merge, это будет поддерживать цифровые клавиши … но следите за повторяющимися ключами
$c = array(); foreach ($b as $bb) { $c[] = array_merge($a,$bb); }
Если вам не нужно $b
в оригинальной форме:
<?php $a = array(4=>2,5=>5); $b = array(array(0=>0,1=>4,2=>10,3=>1000),array()); foreach ($b as &$ref) { $ref = $a + $ref; } var_dump($b);
В противном случае:
<?php $a = array(4=>2,5=>5); $b = array(array(0=>0,1=>4,2=>10,3=>1000),array()); $c = array(); foreach ($b as &$ref) { $c[] = $a + $ref; } var_dump($c);
Вам нужно array_merge.
http://us.php.net/manual/en/function.array-merge.php
Обратите внимание на обработку дубликатов ключей:
Объединяет элементы одного или нескольких массивов вместе так, чтобы значения одного добавлялись к концу предыдущего. Он возвращает результирующий массив. Если входные массивы имеют одинаковые строковые ключи, то более позднее значение для этого ключа перезапишет предыдущий. Если, однако, массивы содержат числовые клавиши, более поздняя величина не будет перезаписывать исходное значение, но будет добавлена. Значения во входном массиве с числовыми клавишами будут перенумерованы с добавочными клавишами, начиная с нуля в массиве результатов.
РЕДАКТИРОВАТЬ:
Возможно, я не прочитал вопрос правильно – пожалуйста, уточните …
Вы хотите, чтобы все элементы массива в одном массиве или массив с исходными массивами как элементы в нем (массив массивов)?
IE: c = array (a = a, b = b, c = c и т. Д.) <- может быть выполнено с помощью array_merge ($ a, $ b, $ c и т. Д.).
против
c = array (b = array (a = a, b = b, c = c и т. д.), a = array (d = d, e = e и т. д.)) <- должно выполняться путем простого объединения следующего массива на конце, как это (и вообще пропустите $ c):
$c[] = $b; $c[] = $a; //or $c = array(); foreach ($possible_opp_action as $sub) { $c[] = $sub; }