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]   

> Описание: Условия if и else в цикле foreach
webog
Отправлено: 23 Мая, 2017 - 10:24:44
Post Id


Частый гость


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


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

[+]


Всем привет!

Не могу понять это у меня так или вообще...

Условие if в цикле foreach - работает.

Условие if и else в цикле foreach - НЕ работает. Почему?

Спасибо всем кто откликнется!


-----
Hello!
 
 Top
Vladimir Kheifets
Отправлено: 23 Мая, 2017 - 10:38:41
Post Id



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


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


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




webog пишет:
Всем привет!

Не могу понять это у меня так или вообще...

Условие if в цикле foreach - работает.

Условие if и else в цикле foreach - НЕ работает. Почему?

Спасибо всем кто откликнется!


Привет! У меня работает.

foreach(array(1,2,3) as $v)
{
if($v==2)
print "true<br>";
else
print "false<br>";
}
 
 Top
webog
Отправлено: 23 Мая, 2017 - 11:18:44
Post Id


Частый гость


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


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

[+]


Vladimir Kheifets пишет:
Привет! У меня работает.


А так?

PHP:
скопировать код в буфер обмена
  1.                 $tekst = 'тест';
  2.         $array = array(
  3.             'Привет!'=>"Привет, {$user_name}!",
  4.             'тест'=>"Что тестируем?",          
  5.             'пока'=>"Давай!",
  6.  
  7.         );
  8.  
  9.         foreach ($array as $k => $v) {
  10.             if ($tekst == $k) {
  11.                 $vivod = $v;
  12.             }else{
  13.                 $vivod = "Ошибка!";
  14.             }
  15.         }


-----
Hello!
 
 Top
OrmaJever Модератор
Отправлено: 23 Мая, 2017 - 12:40:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




и что не работает?

в цикле писали?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
webog
Отправлено: 23 Мая, 2017 - 13:52:11
Post Id


Частый гость


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


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

[+]


OrmaJever пишет:
и что не работает?


else не отрабатывает. Вот сохрани в документ *.php и попробуй. Только $tekst = 'тест'; замени на то чего нет в массиве. Например: $tekst = 'тест11';

OrmaJever пишет:
в цикле писали?


Да, все получает. Переменные не пустые.


-----
Hello!
 
 Top
Строитель Модератор
Отправлено: 23 Мая, 2017 - 15:22:51
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




webog, у вас в теле цикла (а конкретные - в блоках if и else) происходит перезапись переменной $vivod. Для теста скрипта запишите вместо присваивания вывод в браузер (echo) в обеих блоках условия.
 
 Top
andrewkard
Отправлено: 23 Мая, 2017 - 15:38:31
Post Id


Участник


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


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




Что же не работает?
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach ($array as $k => $v) {
  3.             if ($tekst == $k) {
  4.                 $vivod = $v;
  5.             }else{
  6.                 $vivod = "Ошибка!";
  7.             }
  8.         }
  9.  

Итерации:
1) $vivod будет содержать "Ошибка!";
2) $vivod - "Что тестируем?";
3) $vivod - "Ошибка!";
 
 Top
webog
Отправлено: 23 Мая, 2017 - 17:29:55
Post Id


Частый гость


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


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

[+]


Строитель пишет:
происходит перезапись переменной $vivod


andrewkard пишет:
Что же не работает?


Я вас понял парни. Что же делать? Тормозить цикл если условие сработало?


-----
Hello!
 
 Top
Мелкий Супермодератор
Отправлено: 23 Мая, 2017 - 18:00:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Лучше бы понять сначала, что именно должен делать код.
Потом подумать, нет ли нативных средств, например in_array
Затем написать код, которых ведёт себя нужным образом.
Затем подумать, как можно сделать его более читаемым. Например, выкинуть что--нибудь в отдельные методы.


-----
PostgreSQL DBA
 
 Top
webog
Отправлено: 23 Мая, 2017 - 18:15:14
Post Id


Частый гость


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


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

[+]


Мелкий пишет:
Лучше бы понять сначала, что именно должен делать код.


Есть массив. Приходит ключ. По ключу в массиве ищем значение. Нашли? Стоп поиск. Выводим.
Все!


-----
Hello!
 
 Top
Строитель Модератор
Отправлено: 23 Мая, 2017 - 18:26:36
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




webog пишет:
Мелкий пишет:
Лучше бы понять сначала, что именно должен делать код.


Есть массив. Приходит ключ. По ключу в массиве ищем значение. Нашли? Стоп поиск. Выводим.
Все!
Так для этого и цикл не требуется
PHP:
скопировать код в буфер обмена
  1. $key = 'тест';
  2.  
  3. $array = array(
  4.     'Привет!' => "Привет, {$user_name}!",
  5.     'тест'    => 'Что тестируем?',          
  6.     'пока'    => 'Давай!'
  7. );
  8.  
  9. if (array_key_exists($key, $array)) {
  10.     echo "Ключ $key найден!";
  11. } else {
  12.     echo "Ключ $key не найден!";
  13. }
 
 Top
Мелкий Супермодератор
Отправлено: 23 Мая, 2017 - 18:27:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




webog пишет:
Стоп поиск. Выводим.

И где это в ваших 6 строках? Я буду писать?

isset, array_key_exists, in_array, array_search в зависимости от желаемого поведения.


-----
PostgreSQL DBA
 
 Top
webog
Отправлено: 24 Мая, 2017 - 11:22:27
Post Id


Частый гость


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


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

[+]


Всем спасибо, разобрался. Тему можно закрыть.

Цикл не катит для этой задачи. Массивы рулят Улыбка
Тема закрыта!


-----
Hello!
 
 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