За последние 24 часа нас посетили 17190 программистов и 1609 роботов. Сейчас ищут 962 программиста ...

не работает if elseif

Тема в разделе "PHP для новичков", создана пользователем Sarmetr, 9 мар 2020.

Метки:
  1. Sarmetr

    Sarmetr Активный пользователь

    С нами с:
    2 июн 2019
    Сообщения:
    27
    Симпатии:
    0
    Добрый день.
    Проблема(может быть и детская))), но никак не могу понять ПОЧЕМУ ??
    Суть состоит в том что в $_GET прилетает значения в контроллер, я его присваиваю переменной. Дальше в зависимости от того какая переменная (там полюбому будет число), отрабатывает код. Т.е. через if я проверяю какое именно число и если это то самое что надо, отрабатывает код. Но есть большое НО мой код не работает.
    Вот он
    PHP:
    1.  $r = $_GET['Category']['name'];        
    2.      
    3.           if ($r = 186){
    4.     return Yii::$app->response->redirect(['/nedvigcategory/view', 'id' => 1]);
    5.      }elseif($r = 187){
    6.     return Yii::$app->response->redirect(['/nedvigcategory/view', 'id' => 2]);
    7.      }elseif($r = 188){
    8.     return Yii::$app->response->redirect(['/nedvigcategory/view', 'id' => 3]);
    9.      }elseif($r=189){
    10.     return Yii::$app->response->redirect(['/nedvigcategory/view', 'id' => 4]);
    11.      }elseif($r=190){
    12.     return Yii::$app->response->redirect(['/nedvigcategory/view', 'id' => 5]);
    13.      }elseif($r=191){
    14.     return Yii::$app->response->redirect(['/nedvigcategory/view', 'id' => 6]);
    15.      }elseif($r=192){
    16.     return Yii::$app->response->redirect(['/nedvigcategory/view', 'id' => 7]);
    17.      }elseif($r=180){
    18.     return Yii::$app->response->redirect(['/avtocategory/view', 'id' => 1]);
    19.      }elseif($r=181){
    20.     return Yii::$app->response->redirect(['/avtocategory/view', 'id' => 2]);
    21.      }elseif($r=182){
    22.     return Yii::$app->response->redirect(['/avtocategory/view', 'id' => 3]);
    23.      }elseif($r=183){
    24.     return Yii::$app->response->redirect(['/avtocategory/view', 'id' => 4]);
    25.      }elseif($r=184){
    26.     return Yii::$app->response->redirect(['/avtocategory/view', 'id' => 5]);
    27.      }elseif($r=185){
    28.     return Yii::$app->response->redirect(['/avtocategory/view', 'id' => 6]);
    29.      }
    Все время отрабатывает код после первого if, вне зависимости $r=186 или например $r=192, все равно отработает самый первый return. Если написать if ($r == 186) или if ($r = '186') или так if ($r === 186) То этот if вообще пропускается и отрабатывает следующий вне зависимости от значения переменной $r (( Не могу понять почему так происходит, все перепробовал. Помогите понять , что не так в коде. Пишу в yii2 если что.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.853
    Симпатии:
    748
    Адрес:
    Татарстан
    1. Вот куда в Yii лезть, коль элементарных вещей в php не знаете?
    PHP:
    1. IF($a == 1)
    Сравнение - это ДВА ==
    2. Остальное тоже гамно, нет чтоб массив завести с редиректам, какой $r => куда, и в цикле проходить... нет будут городить 100500 if/else
     
  3. Sarmetr

    Sarmetr Активный пользователь

    С нами с:
    2 июн 2019
    Сообщения:
    27
    Симпатии:
    0
    Это
    IF($a == 1)
    не работает, я писал выше. При чем если написать if($r==186), то этот if вообще пропускается , его как бы не видит php, отрабатывает сразу следующий if где стоит одно =. Вот такая вот загадка. Массив можно написать, но смысл ? Мне нужен работающий а не красивый код, вот так я пишу.
     
    #3 Sarmetr, 9 мар 2020
    Последнее редактирование: 9 мар 2020
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    print_r ( $_GET['Category']['name'] )

    в студию
     
  5. Sarmetr

    Sarmetr Активный пользователь

    С нами с:
    2 июн 2019
    Сообщения:
    27
    Симпатии:
    0
    PHP:
    1. $_GET = [
    2.     '_csrf' => '_vlVCCEtdftZvBA94Ma5Y6AiNaISXa1jVP8dWVSqyb-8njAxc0Enrz7_SEzU8c8Jk21n70FpnVM3lG01Mpn9hw==',
    3.     'Category' => [
    4.         'name' => [
    5.             '188',
    6.         ],
    7.     ],
    8.     'search' => 'поиск',
    9. ];.
    Вот такой GET прилетает в контроллер. Соответственно я присваиваю $r значение GET (в данном случае 188) и потом с помощью if пытаюсь проверить КАКАЯ цифра прилитела, и тут приходит БОЛЬШОЙ облом.
     
  6. Sarmetr

    Sarmetr Активный пользователь

    С нами с:
    2 июн 2019
    Сообщения:
    27
    Симпатии:
    0
    Вопрос закрыт
     
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.853
    Симпатии:
    748
    Адрес:
    Татарстан
    Как правило, в "некрасивом" коде трудно найти ошибку из-за его запутанности, как правило он неоптимален по скорости и удобству поддержки