Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 2
Регистрация: 18.12.2015
Сообщений: 189
1

Foreach switch

25.08.2016, 10:05. Показов 1082. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть такая часть кода
PHP
1
2
3
4
5
 foreach (explode("\r\n", $str) as $k) {
                        $keys = explode("|", $k);
                        $keys_ = explode(":", $keys[0]);
                        $arr[] = [$keys_[0], $keys_[1], $keys[1], $keys[2],$date_add,$status];
                    }
Мне нужно в каждой строке что-бы находило $keys[1] и скажем если написана америка то делало там одно действие, а если Британия другое или если что-то другое пропускало.
Пробивал switch но сбрасывало на дэфолт
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2016, 10:05
Ответы с готовыми решениями:

Функция со switch и foreach
Всем привет. К сожалению слабо разбираюсь в функциях, но нужно следующее: есть БД с парой ключ...

Не работает switch в конструкции foreach
Помогите, пожалуйста, новичку с освоением самых-самых основ php. Почему switch в данном случае не...

Foreach внутри foreach
Посетители сайта видят список альбомов в мозаичном виде по 3 альбома в ряд, 12 альбомов на...

Поместить switch в switch
Всем привет. Есть работающий код который обрабатывает строку GET и берет от туда данные Вот урл...

6
2170 / 1653 / 840
Регистрация: 10.01.2015
Сообщений: 5,192
25.08.2016, 10:39 2
Если я правильно понял задачу, то вот
PHP
1
2
3
4
5
$str = '1:1|америка
2:2|британия';// как предположительно выглядит строка до разбора
 
$res = preg_split("/[\r\n:|]+/", $str);
echo (in_array('америка', $res))  ? 'делаем что-то' : 'пропускаем';
0
3 / 3 / 2
Регистрация: 18.12.2015
Сообщений: 189
25.08.2016, 10:42  [ТС] 3
Пифагор,
hey:123 | United States | CO
$_POST идет с textarea
с каждой строки запрос
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
              
                $str = $_POST['add_account_textarea'];
 
                if (!empty($str)){
 
                    $arr = [];
                    $date_add = date("Y-m-d H:i:s");
                    $status = 0;
                    foreach (explode("\r\n", $str) as $k) {
                        $keys = explode("|", $k);
                        $keys_ = explode(":", $keys[0]);
                        $arr[] = [$keys_[0], $keys_[1], $keys[1], $keys[2],$date_add,$status];
                    }
0
38 / 27 / 3
Регистрация: 24.02.2015
Сообщений: 87
25.08.2016, 10:42 4
Возможно задачу попробовать решить с помощью if и esleif. К примеру:
PHP
1
2
3
4
if($keys[1]=='америка')
   {...}
elseif($keys[1]=='Британия')
   {...}
Топорно конечно, но должно помочь.
0
3 / 3 / 2
Регистрация: 18.12.2015
Сообщений: 189
25.08.2016, 10:44  [ТС] 5
Grin640, Тоже думал об этом но тут есть третье действие
другие страны должно отсеивать
0
38 / 27 / 3
Регистрация: 24.02.2015
Сообщений: 87
25.08.2016, 10:56 6
Лучший ответ Сообщение было отмечено lomakin как решение

Решение

Так третьи страны можно в конце с помощью else отсеивать
PHP
1
2
3
4
5
6
7
8
if($keys[1]=='америка')
   {...}
elseif($keys[1]=='Британия')
   {...}
elseif($keys[1]=='Любое нужно условие')
   {...}
else     //отсеиваем третьи страны
   {...}
1
3 / 3 / 2
Регистрация: 18.12.2015
Сообщений: 189
25.08.2016, 12:25  [ТС] 7
Grin640,
Идет пофиг на esle
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
foreach (explode("\r\n", $str) as $k) {
                        $keys = explode("|", $k);
                        $keys_ = explode(":", $keys[0]);
                        $arr[] = [$keys_[0], $keys_[1], $keys[1], $keys[2],$date_add,$status];
                        if($keys[1]=='United States')
                        {
                            echo "Америка";
                        }
                        elseif($keys[1]=='United Kingdom')
                        {
                            echo "Британия";
                        }
                        else     //отсеиваем третьи страны
                        {
                            echo "<br/>";
                            echo $keys[1];
                            echo "<br/>";
                        }
                    }
Добавлено через 1 час 25 минут
Все сработало.
0
25.08.2016, 12:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2016, 12:25
Помогаю со студенческими работами здесь

FOREACH
Доброго времени всем! есть таблица в БД, как на странице прорисовать с помощью foreach CREATE...

Foreach в foreach?
Добрый день. Помогите разобраться. Пытаюсь вывести меню &lt;ul&gt; &lt;? foreach ($menu as...

Foreach
Есть метод который возвращает разметку return &quot;&lt;div class='test'&gt;$name&lt;/div&gt;&quot; есть массив $items...

Do-while ==> foreach
Здраствуйте. Такой вопрос. Есть код, &lt;? include (&quot;blocks/bd.php&quot;); ?&gt; &lt;!DOCTYPE HTML PUBLIC...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru