Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: foreach
 
 автор: SnooPI   (11.04.2007 в 18:57)   письмо автору
 
 

Здравствуйте..
Не могли бы вы подробно объяснить эту функцию??Я вообще никак не понимаю..
Не надо давать ссылки на маны и книги...плз мне объясните с примерами...

   
 
 автор: ddhvvn   (11.04.2007 в 19:16)   письмо автору
 
   для: SnooPI   (11.04.2007 в 18:57)
 

Что конкретно не понятно?
Функция позвзоляет производить обход массива неизвестного размера с неизвестными полями.
Например, мы знаем, что у нас есть массив $mass с неизвестным ко-вом полей

<?php
  
foreach ($mass as $key => $value)
    echo 
"Значение $key равно $value<br>";
?>


Но это я очень туманно ответил :)) Задавайте конкртеные вопросы!

   
 
 автор: Саня   (11.04.2007 в 19:20)   письмо автору
 
   для: SnooPI   (11.04.2007 в 18:57)
 

Цикл foreach предназначен для перебора ассоциативных массивов.
http://softtime.ru/forum/read.php?id_forum=1&id_theme=27098

   
 
 автор: ШИМ   (11.04.2007 в 19:53)   письмо автору
 
   для: Саня   (11.04.2007 в 19:20)
 

Есть массив $array
циклом обходим каждый его елемент:

foreach($array as $element)
{
echo " $element";
}
где as типа служебное слово а $element - это переменная что будет содержать поочереди каждый елемент массива, начиная с указателя вроде!
Тоесть в цикле мы выводим сначала 1й елемент, потом 2 и т.д. до конца массива
ничего сложного!
а если сделать так:

foreach($array as $key->$element)
{
      echo "ключ - $key, елемент -$element";
}

то можно получить еще и доступ к ключам массива - $key

   
 
 автор: Trianon   (11.04.2007 в 19:58)   письмо автору
 
   для: Саня   (11.04.2007 в 19:20)
 

На самом деле - для перебора элементов любых массивов в порядке размещения ключей в них.

   
 
 автор: Саня   (11.04.2007 в 20:17)   письмо автору
 
   для: Trianon   (11.04.2007 в 19:58)
 

Ну я же не сказал только ассоциативные массивы.

   
 
 автор: Trianon   (11.04.2007 в 20:21)   письмо автору
 
   для: Саня   (11.04.2007 в 20:17)
 

Вы - нет. Но в указанной Вами теме cheops акцентировал внимание на различии. Хотя всущности его нет... В php любой массив - ассоциативный. Так что сказать 'только' или не сказать... :)

   
 
 автор: Valick   (11.04.2007 в 20:08)   письмо автору
 
   для: SnooPI   (11.04.2007 в 18:57)
 

[поправлено модерирование]

   
 
 автор: SnooPI   (11.04.2007 в 23:24)   письмо автору
 
   для: SnooPI   (11.04.2007 в 18:57)
 

Блин......я не вот не пойму....
зачем вообще нужна эта функция.....если её перевести, то будет так?
foreach($массив как $переменная)
echo $переменная;
Какая разница что мы будем выводить??
Зачем эта функция??
Разве нельзя задавать...
Ведь можно просто echo $массив

Ну вот
foreach($array as $element)
{
echo " $element";
}
Зачем это делать????Ведь можно просто написать echo $array

foreach($array as $key->$element)
{
echo "ключ - $key, елемент -$element";
}

Что за ключ?Ну блин...не понимаю я

   
 
 автор: ШИМ   (11.04.2007 в 23:30)   письмо автору
 
   для: SnooPI   (11.04.2007 в 23:24)
 

а ты пробовал, так выводить, попробуй!

echo $massive

должно вывести


array


в цикле можно допустим проверять какенидь условие

foreach($array as $element)
{
if($element>5)
echo $element;
}
к примеру!
Или ты допустим захочеш еще какиЕ нибудь модификации этого массива сделать, что Угодно, КРУТИ, ВЕРТИ ЕЛЕМЕНТЫ, ПРОВЕРЯЙ, ПИХАЙ ИХ КУДА ХОЧЕШ, ИСПОЛЬЗУЙ

   
 
 автор: bronenos   (11.04.2007 в 23:56)   письмо автору
 
   для: SnooPI   (11.04.2007 в 23:24)
 

это для упрощения сделано все
вот сравни это и посуди что проще
<?
$students 
= array (
  
/* ученики */
);

/*
надо занести в базу каждого студента и отправить сообщение на почту об успешной сдаче экзамена
*/

/* стандартный for */
for ($i=0$i<count($students); $i++)
{
  
mysql_query ("insert into students set name='{$students[$i]['name']}', surname='{$students[$i]['surname']}', ...");
  
mail ($students[$i]['email'], 'Вы зачислены''Поздравляем с успешной сдачей экзаменов!');
}

/* и через foreach */
foreach ($students as $s)
{
  
mysql_query ("insert into students set name='$s[name]', surname='$s[surname]', ...");
  
mail ($s['email'], 'Вы зачислены''Поздравляем с успешной сдачей экзаменов!');
}
?>

   
 
 автор: SnooPI   (11.04.2007 в 23:44)   письмо автору
 
   для: SnooPI   (11.04.2007 в 18:57)
 

Вроде понял, потестил на локалхосте...
Но не пойму, разве где-то нужно выводить все что находиться в массиве?

   
 
 автор: ШИМ   (11.04.2007 в 23:59)   письмо автору
 
   для: SnooPI   (11.04.2007 в 23:44)
 

ПривеДу тебе простой пример:
У меня есть чекБОКс, мнОГо чекБОксоВ!!!
оТмЕченныЕ ЗаполНяЮт Массив данными!!!
например $book! - это массив
дальше мне нужно загнать его в БД
структура:


id | name | book


так сразу как ты массив загонеш в ЗАПРОС


INSERT INTO table values(NULL,name,$book);

так не правильно!!!! ОШибКа
Нужно перебрать массив по елементам, и каждый уже елемент заганять в таблицу:


foreach($book as $value)
{
   mysql_query("INSERT INTO talbe values (NULL,name,$value) ");
}


Вставляется id, name, и поочередно все елементы массива, до его конца!!!
РАЗОБРАЛСЯ???

   
 
 автор: SnooPI   (12.04.2007 в 00:08)   письмо автору
 
   для: ШИМ   (11.04.2007 в 23:59)
 

Т.е. если без фореач, то он как бы вставит вот такое:
id[0], name[0],$valu[0]
id[1], name[1],$valu[1]
id[2], name[2],$valu[2]
и т.д.
Т.е. мы сократили код ?

   
 
 автор: ШИМ   (12.04.2007 в 00:35)   письмо автору
 
   для: SnooPI   (12.04.2007 в 00:08)
 

Ну ВПРИНЦИПЕ Да!
ПросТО так как у тебя не сделаеш, если не знаеш ключей, и много приймуществ

   
 
 автор: cheops   (12.04.2007 в 14:07)   письмо автору
 
   для: SnooPI   (11.04.2007 в 18:57)
 

Данный тип цикла позволяет обходить ассоциативные массивы... Когда вы работаете с неассоциативным массивом вы заранее знаете, что индексы массива пробегают значения от 0 до N - 1, где N - количество элементов в массиве. Когда вы работаете с ассоциативным массивом, вы заранее не знаете как называется ключ. При помощи foreach вы последовательно можете перебирать элементы массива, получая пары ключ=значение.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования