Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > добавление элемента в многомерный массив


Автор: aleron 23.11.2012, 14:39
Добрый день. 
Код

$arr=array("a"=>array(1,2,3), "b"=>array(4,5,6), "c"=>array(7,8,9));

foreach ($arr as $a=>$b){
$b['10']=array(5,5,5);
//echo $a.'-'.$b.'<br>';
//echo '<b>'.$b[0].'</b><br>';
}
var_dump($arr);

Я думаю, что добавляю в каждый массив ещё по одному элементу - массиву с индексом '10'. Но это не так. Ничего не происходит и ошибки нет. В чём может быть дело?

PS
То-есть увидеть я ожидал следующее:
Код

array(3) { ["a"]=> array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [10]=> array(3) { [0]=> int(5) [1]=> int(5) [2]=> int(5) } } ["b"]=> array(4) { [0]=> int(4) [1]=> int(5) [2]=> int(6) [10]=> array(3) { [0]=> int(5) [1]=> int(5) [2]=> int(5) } } ["c"]=> array(4) { [0]=> int(7) [1]=> int(8) [2]=> int(9) [10]=> array(3) { [0]=> int(5) [1]=> int(5) [2]=> int(5) } } } 


Добавлено через 9 минут и 4 секунды
От отчаяния и безысходности дошёл до мануала по foreach - помогло, амперсанд надо ставить - кто бы мог подумать).

Автор: Aliance 23.11.2012, 15:17
Ну да, переменная передается по значению, а тебе нужно по ссылке. Только в данном примере я бы сделал проще:
Код

foreach ($arr as $a => $b) {
    $arr[$a][10] = array(5, 5, 5);
}

Автор: aleron 23.11.2012, 15:36
Aliance, 
это в примере проще, а в коде там 2 запроса к бд, второй из которых формируется с использованием элементов  масссива, те массивы для вставки неодинаковые

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)