Имеется массив такого вида: Код (Text): array(34) { [1]=> array(5) { ["id"]=> int(1) ["title"]=> string(10) "Название 1" ["level"]=> int(5) ["counter"]=> int(3) ["events"]=> array(3) { [13]=> string(12) "Название 1.1" [16]=> string(12) "Название 1.2" [20]=> string(12) "Название 1.3" } } [2]=> array(5) { ["id"]=> int(2) ["title"]=> string(10) "Название 2" ["level"]=> int(2) ["counter"]=> int(2) ["events"]=> array(2) { [3]=> string(12) "Название 2.1" [1]=> string(12) "Название 2.2" } } ... } При обращении к нему в таком виде (это массив spr_sits): PHP: function increase_count ($id_ev, &$spr_sits) { foreach ($spr_sits as &$sit) { var_dump($sit['events']); } } Упорно пишет Undefined index: events Не могу понять в чем проблема, выводила уже массив всяко разно, есть там этот индекс и массив под ним, но не видит и все тут.
а var_dump($sit) что показывает? И зачем & перед $sit в цикле? Ну, то есть я-то знаю, что это, но интересно узнать, причину, по которой вы его там поставили.
планирую изменять переменные прямо в цикле. var_dump($sit) показывает, что все есть, причем если выводить $sit['id'], $sit['title'] и так далее, то все выводит. Код (Text): array(5) { ["id"]=> int(1) ["title"]=> string(10) "Название 1" ["level"]=> int(5) ["counter"]=> int(3) ["events"]=> array(3) { [13]=> string(12) "Название 1.1" [16]=> string(12) "Название 1.2" [20]=> string(12) "Название 1.3" } } array(5) { ["id"]=> int(2) ["title"]=> string(10) "Название 2" ["level"]=> int(6) ["counter"]=> int(3) ["events"]=> array(3) { [12]=> string(12) "Название 2.1" [17]=> string(12) "Название 2.2" [20]=> string(12) "Название 2.3" } } ... --- Добавлено --- неа, не влияет никак, никакой из них
Окей, принято, хотя лучше так не делать. Правильнее принимать входящие параметры и возвращать некий результат, не изменяя входящие данные. У тебя же логикая работы иная заложена, и это может стать проблемой. Но к проблеме текущей это не относится, да. Проверь, чтобы ключи были действительно одинаковыми. Может иметь место наличие символов с разными кодами, но одинаковой отрисовкой. Киррилическая и латинская "е", например. Проблема в самих ключах, не в php.
PHP: <?php error_reporting ( E_ALL | E_STRICT ); $a = [ [ 'id'=>1, 'title'=>'Название 1', 'level'=>5, 'counter'=>3, 'events'=> [ 'Название 1.1', 'Название 1.2', 'Название 1.3' ] ], [ 'id'=>2, 'title'=>'Название 2', 'level'=>2, 'counter'=>2, 'events'=> [ 'Название 2.1', 'Название 2.2' ] ] ]; function increase_count ($id_ev, &$spr_sits) { foreach ($spr_sits as &$sit) { print_r($sit['events']); } } increase_count(1,$a); PHP: Array ( [0] => Название 1.1 [1] => Название 1.2 [2] => Название 1.3 ) Array ( [0] => Название 2.1 [1] => Название 2.2 )
@Biika Сколько раз Notice: Undefined .... пишется? У вас во 2 уровне массива один из последующих циклов будет отсутствовать ключ events