Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: В цикле foreach получаю только последнюю запись массива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
t3dev
Отправлено: 04 Апреля, 2018 - 12:52:59
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Февр. 2018  


Помог: 0 раз(а)




Все добрый день. Я использую следующий код для вывода объектов с массивом значений. Всё работает почти правильно, но в последнем цикле я получаю только последнюю запись массива. Подскажите пожалуйста, что не так?


PHP:
скопировать код в буфер обмена
  1. foreach ($classItems as $i => $items) {
  2.             $childClassesArray = explode(", ", $items->getSubClasses());
  3.             foreach ($childClassesArray as $childClassesCodes) {
  4.                 $childClassesObj = explode(",", $childClassesCodes);                
  5.                 foreach($childClassesObj as $code) {
  6.            // $code выводит список кодов, примерно 50 штук.
  7.                    // Далее находим по коду объект с массивом значений, их столько же сколько и кодов.
  8.                     $childCodesObj = $this->classItemRepository->findByReferenceCode($code);
  9.                    
  10.                     // Добавляем запись об объекте. Но почему то добавляется только последний элемент массива.
  11.                     $items->setChildClasses($childClassesObj);
  12.                 }            
  13.             }          
  14.         }
 
 Top
andrewkard
Отправлено: 05 Апреля, 2018 - 16:38:29
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




t3dev пишет:
$items->setChildClasses

а что он делает?
 
 Top
arbuzmaster
Отправлено: 07 Апреля, 2018 - 22:33:10
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Май 2017  


Помог: 0 раз(а)




Если $childCodesObj это массив, то
А. Он должен быть объявлен -

Б. Значения в цикле добавляются так
PHP:
скопировать код в буфер обмена
  1. $childCodesObj[] = $this->classItemRepository->findByReferenceCode($code);

А так, как написано в Вашем коде, значение массива просто перезаписывается и в результате Вы получаете последнее значение из цикла.
 
 Top
Vladimir Kheifets
Отправлено: 08 Апреля, 2018 - 11:46:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




t3dev пишет:
Все добрый день. Я использую следующий код для вывода объектов с массивом значений. Всё работает почти правильно, но в последнем цикле я получаю только последнюю запись массива. Подскажите пожалуйста, что не так?


Добрый день!
См. ниже. Значение $items определяется в 1 стр., массив $childClassesObj в 6 стр. Для чего нужна в цикле foreach($childClassesObj as $code) строка $items->setChildClasses($childClassesObj)?
PHP:
скопировать код в буфер обмена
  1. foreach ($classItems as $i => $items)
  2. {
  3.         $childClassesArray = explode(", ", $items->getSubClasses());
  4.         foreach ($childClassesArray as $childClassesCodes)
  5.         {
  6.                 $childClassesObj = explode(",", $childClassesCodes);
  7.                 foreach($childClassesObj as $code)
  8.                 {
  9.                     ..................
  10.                     ..................
  11.                     $items->setChildClasses($childClassesObj);
  12.                 }    
  13.         }  
  14. }

Удачи!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB