Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
#1

как сделать условие используя массив - PHP

04.12.2012, 11:25. Просмотров 2166. Ответов 11
Метки нет (Все метки)

Привет всем. у меня есть условие
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$status = false;
  foreach($arr as $k=>$v) {
      if($v == 16 || $v == 17 || $v == 18 || $v == 19 ) {
$status = true;
}
}
if($status) echo '<br /><strong>Квалифицированная помощь</strong><br />';
   foreach($arr as $v) 
        {
      if ($v==16 )
     { echo  " <a href=\"/category/tasks_category?page=1&cat=".$v."\">ссылка</a>";}
      if ($v==17 )
     { echo  " <a href=\"/category/tasks_category?page=1&cat=".$v."\">ссылка</a>";}
      if ($v==18 )
     { echo  " <a href=\"/category/tasks_category?page=1&cat=".$v."\"> ссылка</a>";}
      if ($v==19 )
 { echo  " <a href=\"/category/tasks_category?page=1&cat=".$v."\"> ссылка</a>";}
 
}
значение массива $arr я получаю из базы. У меня еще есть массив такого вида
PHP
1
$id_cat_1= array(1 =>16,17,18,19);
То есть все цифры которые есть в массиве мы используем для сравнения значений из бд. Так вот как мне сделать что бы не прописывать много раз условие в ручную, а использовать массив для этих целей. Зарание большое спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2012, 11:25
Я подобрал для вас темы с готовыми решениями и ответами на вопрос как сделать условие используя массив (PHP):

Как сделать условие
Добрый день, столкнулся с такой проблемой, Юзер на сайте делает ставку например...

как сделать правильно условие по дате
Привет всем у меня есть поле с датой формат DATE По умолчанию в поле стоит...

Как сделать, немного странное, условие
Хотелось бы узнать, можно ли сделать чтобы обработчик выбирал один из...

Как сделать условие выбора из выпадающего списка?
Есть выпадающий список с типом насосов: &lt;tr&gt;&lt;td&gt;Тип насосно-компрессорных...

как сделать условие только при нажатии кнопки
Привет всем. Мне надо сделать условие после нажатия на кнопку, так что бы...

Можно ли сделать условие else if в цикле
Привет всем. Можно ли сделать вот это условие в цикле if (in_array($cat,...

11
crautcher
2018 / 1990 / 463
Регистрация: 27.05.2011
Сообщений: 6,835
04.12.2012, 11:35 #2
PHP
1
2
3
4
5
6
$id_cat_1= array(16 => true,17=> true,18=> true,19=> true);
if($status) echo '<br /><strong>Квалифицированная помощь</strong><br />';
   foreach($arr as $v){
       if (isset($id_cat_1[$v])) 
                    echo  " <a href=\"/category/tasks_category?page=1&cat=" , $v , "\">ссылка</a>";
   }
1
Para bellum
Эксперт PHP
3943 / 2929 / 924
Регистрация: 06.01.2011
Сообщений: 8,568
04.12.2012, 11:46 #3
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    $status = false;
    
    # Массив со значениями, которые должны совпасть
    $id_cat_1= array( 16,17,18,19 );
    
    # Если в массиве $arr есть хоть одно значение из $id_cat_1
    if( array_diff( $arr, $id_cat_1 ) != $arr )
        $status = true;
        
    if($status) 
        echo '<br /><strong>Квалифицированная помощь</strong><br />';
    
    # В цикле обходим массив
    foreach( $arr as $v )
    {
        # Если это значение есть в массиве
        if( in_array( $v, $id_cat_1 ) )
            # Выводим ссылку
            echo  '<a href="/category/tasks_category?page=1&cat="'.$v.'"> ссылка</a>';
    }
1
Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
04.12.2012, 13:29  [ТС] #4
что-то не вышло вот что храниться в массиве $arr
PHP
1
Array ( [0] => 15 [1] => 17 [2] => 18 [3] => 20 [4] => 25 [5] => 30 [6] => 32 )
использовал массив
PHP
1
$id_cat_1= array(1 =>15,16,17,18,19,20,21,22,23,24,25);
Выдало две ссылки в которых даже не писался ключ $v
0
crautcher
2018 / 1990 / 463
Регистрация: 27.05.2011
Сообщений: 6,835
04.12.2012, 13:37 #5
PHP
1
2
3
4
5
6
7
8
<?
$arr = array ( 15 , 17 ,18 , 20 , 25 , 30 , 32 );
$id_cat_1= array(15=>true,16=>true,17=>true,18=>true,19=>true,20=>true,21=>true,22=>true,23=>true,24=>true,25=>true);
 
   foreach($arr as $v){
       if (isset($id_cat_1[$v])) 
                    echo  " <a href=\"/category/tasks_category?page=1&cat=" , $v , "\">ссылка</a>";
   }
на экране 5 ссылок
1
Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
04.12.2012, 14:03  [ТС] #6
Извините забыл добавить что я рассматриваю пример Lyodik, мне надо использовать массив именно в таком виде
PHP
1
$id_cat_1= array(1 =>15,16,17,18,19,20,21,22,23,24,25);
0
crautcher
2018 / 1990 / 463
Регистрация: 27.05.2011
Сообщений: 6,835
04.12.2012, 14:11 #7
в таком случае ваш скрипт в разы медленее моего варианта работать будет
PHP
1
2
3
4
5
6
7
8
<?php
$arr = array ( 15 , 17 ,18 , 20 , 25 , 30 , 32 );
$id_cat_1= array(1 =>15,16,17,18,19,20,21,22,23,24,25);
 
   foreach($arr as $v){
       if (in_array($v , $id_cat_1)) 
                    echo  " <a href=\"/category/tasks_category?page=1&cat=" , $v , "\">ссылка</a>";
   }
тоже прекрасно работает
1
Para bellum
Эксперт PHP
3943 / 2929 / 924
Регистрация: 06.01.2011
Сообщений: 8,568
04.12.2012, 14:13 #8
Цитата Сообщение от crautcher Посмотреть сообщение
в таком случае ваш скрипт в разы медленее моего варианта работать будет
crautcher, а у меня не тоже самое ?
Цитата Сообщение от Lyodik Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
# В цикле обходим массив
 * *foreach( $arr as $v )
* * {
* * * * # Если это значение есть в массиве
 * * * *if( in_array( $v, $id_cat_1 ) )
* * * * * * # Выводим ссылку
 * * * * * *echo *'<a href="/category/tasks_category?page=1&cat="'.$v.'"> ссылка</a>';
* * }
1
KOPOJI
04.12.2012, 14:18
  #9

Не по теме:

Цитата Сообщение от Lyodik Посмотреть сообщение
а у меня не тоже самое ?
неа) получится адрес вида site.ru/category/tasks_category?page=1&cat="категория

0
Para bellum
Эксперт PHP
3943 / 2929 / 924
Регистрация: 06.01.2011
Сообщений: 8,568
04.12.2012, 14:21 #10
Цитата Сообщение от KOPOJI Посмотреть сообщение
неа)
Ну да, внимательности чуть больше нужно.

Добавлено через 1 минуту
Но тут дело не в этом . Ссылка конечно неправильная получалась.
0
Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
04.12.2012, 14:47  [ТС] #11
Хочу у Вас спросить вот у меня таких условий с циклом будет несколько, а точнее 10 будет ли быстрее производительность, если сделать что-вроде функции и в переменные вставлять значения массивов ведь они только и повторяются? Зарание большое спасибо.
0
Para bellum
Эксперт PHP
3943 / 2929 / 924
Регистрация: 06.01.2011
Сообщений: 8,568
04.12.2012, 14:53 #12
Цитата Сообщение от Братуха Посмотреть сообщение
будет ли быстрее производительность, если сделать что-вроде функции и в переменные вставлять значения массивов ведь они только и повторяются?
Производительность не знаю, но лучше сделать функцию, чтобы код не дублировать.
1
04.12.2012, 14:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2012, 14:53
Привет! Вот еще темы с решениями:

Как сделать массив
Как сделать массив такого вида? mid =&gt; 1 ___nid =&gt; 1 _______sid =&gt; 1...

Как сделать такой массив
Как сделать такие массивы например size.ru/sort=last_time_up&amp;page=1&amp;car=1332...

Как из строки сделать массив?
Суть такая: есть строка 'array(array(1,2),array(4,5),array(7,8))' ...

Как сделать многомерный массив
Формирую массив $menu = array(); while(...){ $menu = $arFields; };...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru