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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему не работает цикл ? 
:(
    Опции темы
GQU
Дата 28.3.2011, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Почему не работает цикл ?
Код

<?php
$a=array('cat','dog','parrot','xxx','yyy','zzz');
for(Reset($a);$k=key($a);Next($a));
echo "$k=".current($a)."<br>";
?>

PM MAIL   Вверх
patap
Дата 28.3.2011, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 26
Всего: 40



ну во-первых - нет тела цикла.
во-вторых - нет ключей в массиве.
в третьих, зачем это все?

Добавлено через 1 минуту и 44 секунды
Код

$a = array('key1' => 'cat', 'key2' => 'dog', 'key3' => 'parrot', 'key4' => 'xxx', 'key5' => 'yyy', 'key6' => 'zzz');
for (reset($a); $k = key($a); Next($a))
{
  echo "$k=".current($a)."<br>";
}



--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
GQU
Дата 28.3.2011, 16:48 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



1) Да, я забыл поставить {
2) Про ключи(они есть, просто не указаны, те 0,1,3)
3) Знаете что у меня выдает ваш пример, смотрите
Отв:
$a = array('key1' => 'cat', 'key2' => 'dog', 'key3' => 'parrot', 'key4' => 'xxx', 'key5' => 'yyy', 'key6' => 'zzz'); for (reset($a); $k = key($a); Next($a)) { echo "$k=".current($a)."
"; }
Как нормально сделать ?
PM MAIL   Вверх
patap
Дата 28.3.2011, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 26
Всего: 40



интересно просто, первый раз вижу такой обход массива

Добавлено через 1 минуту и 25 секунд
Цитата(GQU @  28.3.2011,  15:48 Найти цитируемый пост)
Как нормально сделать ?

взять код в теги <?php ?>  ?


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
GQU
Дата 28.3.2011, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



О, точно
А почему так не работает
Код

<?php
$a=array('cat','dog','parrot','xxx','yyy','zzz');
for(Reset($a);$k=key($a);Next($a)){
echo "$k=".current($a)."<br>";
}
?>

Если ключи не указаны, они же нумер-ся 0123...
или key не работает, когда ключи явно не указаны ?

Ничего не могу понять
Код

<?php
$a=array('cat','dog','parrot','xxx','yyy','zzz');
Reset($a);
$k=key($a);
echo "$k=".current($a)."<br>";
next($a);
$k=key($a);
echo "$k=".current($a)."<br>";
?>

Так key() работает !

Это сообщение отредактировал(а) GQU - 28.3.2011, 17:06
PM MAIL   Вверх
patap
Дата 28.3.2011, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 26
Всего: 40



я так полагаю что когда не указаны ключи, то на первой итерации мы сразу выходим из цикла, т.к. первый ключ массива имеет значение 0

т.е, формально, получается цикл с таким вот условием
Код

for(Reset($a); $k = 0; Next($a)) {  // имею ввиду, что на первой итерации key($a) = 0
  echo "$k=".current($a)."<br>";
}

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

Добавлено @ 17:34
вот возможный вариант решения
Код

for (reset($a), $k = key($a); $k !== NULL; next($a), $k = key($a))
{
  echo $k.'='.current($a)."<br>";
}



Это сообщение отредактировал(а) patap - 28.3.2011, 17:36


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
GQU
Дата 28.3.2011, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

имею ввиду, что на первой итерации key($a) = 0

И что из того что key($a) = 0 ?
Если бы key равнялось числу, которое было бы больше, чем кол-во ключе1 тогда цикл бы выдал false и прекр-ся бы выполняться !

Это сообщение отредактировал(а) GQU - 28.3.2011, 17:42
PM MAIL   Вверх
patap
Дата 28.3.2011, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 26
Всего: 40



Ну в этом случае, получается, заведомо ложное условие для цикла, в принципе тоже самое, что и запускать такой вот цикл

Код

for(Reset($a); false; Next($a)) {
...
}


Добавлено через 13 минут и 32 секунды
Цитата(GQU @  28.3.2011,  16:41 Найти цитируемый пост)
Если бы key равнялось числу, которое было бы больше, чем кол-во ключе1 тогда цикл бы выдал false и прекр-ся бы выполняться !

не в том дело

Код

$arr = array('a', 'b');
var_dump($arr);


первая итерация этого:
Код

$arr = array('a', 'b');
for (reset($a); $k = key($arr); next($a)
{
   // do something
}


тоже самое что:
Код

for (reset($a); $k = 0; next($a) {}
for (reset($a); 0; next($a) {}
for (reset($a); FALSE; next($a) {}
//ну и так далее



--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
patap
Дата 28.3.2011, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 26
Всего: 40



аналогично , если в середине массива будет элемент у которог ключ равен 0, то на этом элементе выполнение цикла и закончится.

смысла в коде не вижу..


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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