Условие IF выполняется не верно [закрыто]

249
10 декабря 2016, 10:15
$otr = array("ПЧ-25" , "ПЧ-1" , "ПЧ-2" ); // массив на названия
$otr2 = array("ПЧ-30" , "ПЧ-31" , "ПЧ-32"); // массив  на названия
$date1 = date_create($_POST['date_transfer']);
$date2 = date_create($_POST['time_transfer']);
if ($otr = $old_group_transfer){
    $interval = $date1->diff($date2);
    $a = $interval->format('%a');
}
else if ($otr2= $old_group_transfer){
    $interval = $date1->diff($date2);
    $a = $interval->format('%a')*1.5;
}
// if no error occured, continue ....
if(!isset($errMSG))//  дальше идёт добавление в базу

вообщем условие if работает но не так, получается по условию я хотел осуществить если переменная равна одному из значений массива то выполнять это действие или если переменная равна другому массиву то выполнять другое действие.

то что написано сверху , он выполняет только первое условие , какое бы значение из двух массивов я бы не взял

Answer 1

Во-первых, для сравнения нужно использовать оператор "==", т.к. оператор "=" присваивает значение, возвращает true и у вас выполняется первое условие. Во-вторых, $otr у вас массив. Я так понимаю, нужно проверить, входит ли значение переменной $old_group_transfer в этот массив? Тогда нужно использовать функцию in_array:

$otr = array("ПЧ-25" , "ПЧ-1" , "ПЧ-2" ); // массив на названия
$otr2 = array("ПЧ-30" , "ПЧ-31" , "ПЧ-32"); // массив  на названия
$date1 = date_create($_POST['date_transfer']);
$date2 = date_create($_POST['time_transfer']);
if (in_array($old_group_transfer, $otr)){
    $interval = $date1->diff($date2);
    $a = $interval->format('%a');
}
else if (in_array($old_group_transfer, $otr2)){
    $interval = $date1->diff($date2);
    $a = $interval->format('%a')*1.5;
}
// if no error occured, continue ....
if(!isset($errMSG))//  дальше идёт добавление в базу
Answer 2

Корректный код:

$otr = array("ПЧ-25" , "ПЧ-1" , "ПЧ-2" ); // массив на названия
$otr2 = array("ПЧ-30" , "ПЧ-31" , "ПЧ-32"); // массив  на названия
$date1 = date_create($_POST['date_transfer']);
$date2 = date_create($_POST['time_transfer']);
   if ($otr == $old_group_transfer ){
      $interval = $date1->diff($date2);
      $a = $interval->format('%a');
   }
   elseif ($otr2 == $old_group_transfer){
      $interval = $date1->diff($date2);
      $a = $interval->format('%a')*1.5;
   }
    // if no error occured, continue ....
    if(!isset($errMSG))//  дальше идёт добавление в базу
READ ALSO
Что такое package apache22-2.2.27?

Что такое package apache22-2.2.27?

Добрый день!

258
Как обновить версию PHP?

Как обновить версию PHP?

Удалил содержимое папки php5, закинул туда содержимое php-56

270
Не работают скрипты на WordPress (все подключено)

Не работают скрипты на WordPress (все подключено)

Вот пример кода на js (и он не работает) и результат который выдается в браузере в теге head , можно увидеть что все подключается нормальноНе могу...

1161
Как отправить из js в переменную php

Как отправить из js в переменную php

вот есть скрипт который берет из фото base64 и пихает его в src как сделать что бы base64 отправлялся в переменную php код на этой же странице?

401