![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
race1 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 18.6.2004 Репутация: нет Всего: нет |
Как известно, переменная $cur_value не удаляется после выполнения цикла. Это понятно, но почему не работает такой же foreach если вызвать его просто второй раз? Т.е.
Просто интересно разобраться, почему так. Разве $cur_value во втором цикле не будет просто перезаписана? И почему правильно работает если использовать ссылку. Вообще в реальном примере $array это массив массивов массивов, но думаю это не очень важно... Спасибо. |
||||
|
|||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: 8 Всего: 9 |
как-то удивительно, что оно у тебя вообще что-то выводит -------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
teroni |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 15.5.2007 Где: Днепропетровск Репутация: 8 Всего: 22 |
Что-то вы намудрили... У меня этот код 123 три раза вывел... Только объявление массива неправильное конечно. У Вас действительно ЭТОТ код печатал во втором цикле 113?
|
|||
|
||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: 8 Всего: 9 |
этот код кроме Parse error ничего не печатает вовсе
-------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
race1 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 18.6.2004 Репутация: нет Всего: нет |
Насчёт объявления массива это моя ошибка, надо конечно так:
Насчёт реального кода. Да, один foreach для вывода значений массива. В массиве 4 элемента, на выходе было два первых элемента, потом 3-й и 4-й. Сам массив что-то вроде этого:
Выводил $cur_value['id'] и $cur_value['name'] |
||||
|
|||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: 8 Всего: 9 |
![]() -------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
race1 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 18.6.2004 Репутация: нет Всего: нет |
Угу
![]() Есть один файл, который подключает несколько других. Один из этих файлов - левое меню. Там из базы формируется массив который я скопипастил в предыдущем посте, и он выводится через foreach:
В другом файле мне опять надо вывести эти же категории, опять foreach и теже названия переменных:
Вот здесь-то и проявляется косяк, элементы массива выводились два раза первый, потом третий и 4-й. Это сообщение отредактировал(а) race1 - 28.10.2008, 18:44 |
||||
|
|||||
Nigel |
|
|||
познаю мир ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 20.11.2007 Репутация: 7 Всего: 19 |
При каждой итерации цикла смещается внутренний указатель массива, однако foreach при запуске делает reset. Вероятно, у вас где-то ошибка в реализации.
По-моему, удобнее в вашем случае использовать array_walk или array_walk_recursive |
|||
|
||||
sTa1kEr |
|
||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
race1, первые два цикла у вас в примере полностью рабочие, а вот последнем есть распространенная ошибка (думаю из-за этого у вас и проблемы):
Нужно всегда помнить, что операция по присвоению жесткой ссылки всегда затрагивает обе переменные (они обе помечаются, как "переменная переданая по ссылке") до тех пор пока существует более одной ссылки на значение переменной. А приводит это к тому, что поведение таких переменных несколько отличается, а именно в данном случае это приводит к тому, что последний элемент в массиве будет передаваться по ссылке при копировании массива! Пример:
Есть и еще ряд других проблем связанных с амперсандом, по этому крайне желательно избегать их использование. Но если это необходимо, то удалять сразу после использования:
|
||||
|
|||||
race1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 18.6.2004 Репутация: нет Всего: нет |
Спасибо, стало понятнее!
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |