Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> foreach vs for 
:(
    Опции темы
bars80080
Дата 12.5.2009, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(enof @  12.5.2009,  01:35 Найти цитируемый пост)
ну так foreach и является той самой "функцией", облегчающей труд кодера.

дык, for тоже является соответствующей функцией, созданной для облегчения труда


Цитата(Рыжий @  12.5.2009,  03:32 Найти цитируемый пост)
хотя бы потому, что в ней не определяется дополнительная переменная $i для счета.

как же он тогда вообще считает? 

вот у меня вопрос тестировщикам, а вы пробовали на крупных массивах сравнивать for и foreach? к примеру, двумерный массив, содержащий строки из БД, ну хотя бы 100-10000, при этом в каждой записи 5-10 полей в том числе со строковыми элементами до 250 символов?
PM MAIL WWW   Вверх
Рыжий
Дата 12.5.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



Цитата(bars80080 @  12.5.2009,  08:44 Найти цитируемый пост)
как же он тогда вообще считает? 

Хм.  smile  А резве foreach не перемещается по массиву от предыдущего к следующему элементу, пока не достигнет конца?
В то время как for:
Код

for($i=0;$i<5;$i++){ }
echo "Переменная \$i = ".$i;


А по поводу тестов: 
http://derekgallo.com/2007/04/19/for-vs-foreach/
Тут есть foreach, while и другие
И наверное самый полный: http://www.phpbench.com/
PM MAIL ICQ   Вверх
bars80080
Дата 12.5.2009, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Рыжий @  12.5.2009,  13:07 Найти цитируемый пост)
А резве foreach не перемещается по массиву от предыдущего к следующему элементу, пока не достигнет конца?

а как он  будет перемещаться от элемента к элементу? или думаешь, массив в памяти хранится сплошным куском?

PM MAIL WWW   Вверх
NLspieler
Дата 12.5.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Кажется, если я не ошибаюсь, foreach может пройтись и по такому массиву:

Код

$array[12] = 'aasd' ;
$array[45] = 'aasd' ;
$array[122] = 'aasd' ;
$array[425] = 'aasd' ;
$array['aasd'] = 'aasd' ;
$array['asdd'] = 'aasd' ;
$array['aggd'] = 'aasd' ;

?

for же этого сделать не сможет без дополнительного гемора. 

PM MAIL   Вверх
bars80080
Дата 12.5.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(NLspieler @  12.5.2009,  13:53 Найти цитируемый пост)
Кажется, если я не ошибаюсь, foreach может пройтись и по такому массиву:

вообще-то, foreach как раз и предназначен для проходу по такого рода массивам. вот в этой ситуации использовать for можно только с большой оправдательной речью
PM MAIL WWW   Вверх
Рыжий
Дата 12.5.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



Цитата(bars80080 @  12.5.2009,  12:39 Найти цитируемый пост)
а как он  будет перемещаться от элемента к элементу? или думаешь, массив в памяти хранится сплошным куском?

Нет, foreach не вводит новую переменную в php, из мануала:
Цитата
On each loop, the value of the current element is assigned to $value and the internal array pointer is advanced by one (so on the next loop, you'll be looking at the next element). 


Это как использование функции next()/each(), которые просто возвращают элемент массива, и перемещают указатель на следующий.
PM MAIL ICQ   Вверх
bars80080
Дата 12.5.2009, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



да причём здесь ввод дополнительной переменной? я говорю о физической памяти. вот у нас поле ячеек объёмом в 200-3000 мегабайт оперативной памяти, какие из них содержат непосредственно данные массива? неужели пхп кладёт их рядком друг за другом и ориентируется всего по двум флагам начала и конца, двигая их как в регистре? да я не уверен, что даже данные одного элемента массива занимают упорядоченный набор байт. полюбому для массива составлен список адресов и вводится итерационная переменная на каком-то глубоком уровне, C или ещё ниже, которая перебирает все адреса и извлекает через них данные

PM MAIL WWW   Вверх
vasac
Дата 13.5.2009, 11:16 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Где-где, а на Винграде потока столь феерического бреда не ожидал.
Давайте ещё в очередной раз подискутируем насчёт print vs echo.
PM WWW   Вверх
Рыжий
Дата 15.5.2009, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



Цитата(bars80080 @  12.5.2009,  16:59 Найти цитируемый пост)
да причём здесь ввод дополнительной переменной? я говорю о физической памяти. вот у нас поле ячеек объёмом в 200-3000 мегабайт оперативной памяти, какие из них содержат непосредственно данные массива? неужели пхп кладёт их рядком друг за другом и ориентируется всего по двум флагам начала и конца, двигая их как в регистре? да я не уверен, что даже данные одного элемента массива занимают упорядоченный набор байт. полюбому для массива составлен список адресов и вводится итерационная переменная на каком-то глубоком уровне, C или ещё ниже, которая перебирает все адреса и извлекает через них данные

Дык я о том же - foreach не объявляет переменную в php окружении, насколько мне известно много переменных в php влияют на  скорость выполнения.

Цитата(vasac @  13.5.2009,  10:16 Найти цитируемый пост)
Где-где, а на Винграде потока столь феерического бреда не ожидал.
Давайте ещё в очередной раз подискутируем насчёт print vs echo. 

угу, что-то мы далеко в лес зашли  smile 
PM MAIL ICQ   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.