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
Форумы портала PHP.SU :: Версия для печати :: Условия в цикле foreach
Форумы портала PHP.SU » » Вопросы новичков » Условия в цикле foreach

Страниц (1): [1]
 

1. webog - 23 Мая, 2017 - 10:24:44 - перейти к сообщению
Всем привет!

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

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

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

Спасибо всем кто откликнется!
2. Vladimir Kheifets - 23 Мая, 2017 - 10:38:41 - перейти к сообщению
webog пишет:
Всем привет!

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

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

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

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


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

foreach(array(1,2,3) as $v)
{
if($v==2)
print "true<br>";
else
print "false<br>";
}
3. webog - 23 Мая, 2017 - 11:18:44 - перейти к сообщению
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.         }
4. OrmaJever - 23 Мая, 2017 - 12:40:24 - перейти к сообщению
и что не работает?

в цикле писали?
5. webog - 23 Мая, 2017 - 13:52:11 - перейти к сообщению
OrmaJever пишет:
и что не работает?


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

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


Да, все получает. Переменные не пустые.
6. Строитель - 23 Мая, 2017 - 15:22:51 - перейти к сообщению
webog, у вас в теле цикла (а конкретные - в блоках if и else) происходит перезапись переменной $vivod. Для теста скрипта запишите вместо присваивания вывод в браузер (echo) в обеих блоках условия.
7. andrewkard - 23 Мая, 2017 - 15:38:31 - перейти к сообщению
Что же не работает?
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 - "Ошибка!";
8. webog - 23 Мая, 2017 - 17:29:55 - перейти к сообщению
Строитель пишет:
происходит перезапись переменной $vivod


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


Я вас понял парни. Что же делать? Тормозить цикл если условие сработало?
9. Мелкий - 23 Мая, 2017 - 18:00:32 - перейти к сообщению
Лучше бы понять сначала, что именно должен делать код.
Потом подумать, нет ли нативных средств, например in_array
Затем написать код, которых ведёт себя нужным образом.
Затем подумать, как можно сделать его более читаемым. Например, выкинуть что--нибудь в отдельные методы.
10. webog - 23 Мая, 2017 - 18:15:14 - перейти к сообщению
Мелкий пишет:
Лучше бы понять сначала, что именно должен делать код.


Есть массив. Приходит ключ. По ключу в массиве ищем значение. Нашли? Стоп поиск. Выводим.
Все!
11. Строитель - 23 Мая, 2017 - 18:26:36 - перейти к сообщению
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. }
12. Мелкий - 23 Мая, 2017 - 18:27:13 - перейти к сообщению
webog пишет:
Стоп поиск. Выводим.

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

isset, array_key_exists, in_array, array_search в зависимости от желаемого поведения.
13. webog - 24 Мая, 2017 - 11:22:27 - перейти к сообщению
Всем спасибо, разобрался. Тему можно закрыть.

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

 

Powered by ExBB FM 1.0 RC1