есть массив :
print_r($data['AdvertData']['subCategory']);
Array
(
[0] => Array
(
[seo] => dictaphones
[id_category] => 124
[title] => Диктофоны
)
[1] => Array
(
[seo] => audio
[id_category] => 122
[title] => Аудио
)
)
я создаю новый массив и наполняю его пробегаясь по верхнему и обращаясь к ячейке [id_category]
$data['subSelects'] = array();
$mainCategory = $data['AdvertData']['mainCategory'];
$i = 0;
foreach ($data['AdvertData']['subCategory'] as $k => $v) {
$i++;
$data['subSelects'][$i] = $this->app->AdvertsModel->Selects($mainCategory, $v['id_category']);
$data['subSelects'][$i]['parent'] = $data['AdvertData']['subCategory'][$k++]['id_category'];
$mainCategory = $data['AdvertData']['subCategory'][$k++]['id_category'];
}
где mainCategory исходый самый первый id который про мере прохождения цикла меняется.
(как я понимаю) на последней итерации цикла выдается ошибка:
Notice: Undefined offset: 2 in
я не могу ее исправить, пробовал разные проверки существования или на пустоту последнего ключа массива ([$k++]) не моиогло...
$a++ Постфиксный инкремент Возвращает значение $a, затем увеличивает $a на единицу. http://php.net/manual/ru/language.operators.increment.php
Таким образом на первой итерации ваш пример превращается:
$k = 0 //из цикла foreach
$i = 1 // поскольку в первой строке цикла делаете инкремент $i++
// здесь $k++ возвращает 0, поскольку $k++ ПОСТинкрементный оератор
$data['subSelects'][1]['parent'] = $data['AdvertData']['subCategory'][0]['id_category'];
// после первого инкремента $k++ $k превращается в 1
$mainCategory = $data['AdvertData']['subCategory'][1]['id_category'];
ошибка вылетает на втором шаге цикла, поскольку:
$k = 1 //из цикла foreach
$i = 2 // поскольку в первой строке цикла делаете инкремент $i++
// здесь $k++ возвращает 1, поскольку $k++ ПОСТинкрементный оератор
$data['subSelects'][2]['parent'] = $data['AdvertData']['subCategory'][1]['id_category'];
// после инкремента $k++ в предыдущей строке $k превращается в 2 и вызывает ошибку
// Notice: Undefined offset: 2 in
$mainCategory = $data['AdvertData']['subCategory'][2]['id_category'];
Решение: как вам советовали в первом комментарии, не использовать $i, $i++, $k++, а везде вместо них подставить $k, поскольку она итак итерируется в цикле foreach
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости