PHP If оператор с несколькими условиями - PullRequest
28 голосов
/ 08 апреля 2011

У меня есть переменная $var.

Я хочу, чтобы эхо "true", если $var равно любому из следующих значений abc, def, hij, klmили nop.Есть ли способ сделать это с помощью одного оператора, как && ??

Ответы [ 10 ]

96 голосов
/ 08 апреля 2011

Элегантный способ - создать массив на лету и использовать in_array():

if (in_array($var, array("abc", "def", "ghi")))

. switch оператор также является альтернативой:

switch ($var) {
case "abc":
case "def":
case "hij":
    echo "yes";
    break;
default:
    echo "no";
}
37 голосов
/ 08 апреля 2011
if($var == "abc" || $var == "def" || ...)
{
    echo "true";
}

Использование «Или» вместо «И» поможет мне, я думаю

11 голосов
/ 08 апреля 2011

Не знаю, почему вы хотите использовать &&.Theres более простое решение

echo in_array($var, array('abc', 'def', 'hij', 'klm', 'nop'))
      ? 'yes' 
      : 'no';
11 голосов
/ 08 апреля 2011

вы можете использовать функцию in_array из php

$array=array('abc', 'def', 'hij', 'klm', 'nop');

if (in_array($val,$array))
{
  echo 'Value found';
}
4 голосов
/ 08 апреля 2011

Вы можете попробовать это:

<?php
    echo (($var=='abc' || $var=='def' || $var=='hij' || $var=='klm' || $var=='nop') ? "true" : "false");
?>
4 голосов
/ 08 апреля 2011

вы можете использовать логический оператор или: ||

if($var == 'abc' || $var == 'def' || $var == 'hij' || $var == 'klm' || $var == 'nop'){
    echo "true";
}
2 голосов
/ 22 февраля 2018

Я обнаружил, что этот метод работает для меня:

$thisproduct = "my_product_id";
$array=array("$product1", "$product2", "$product3", "$product4");
if (in_array($thisproduct,$array)) {
    echo "Product found";
}
1 голос
/ 14 апреля 2016

Попробуйте этот кусок кода:

$first = $string[0]; 
if($first == 'A' || $first == 'E' || $first == 'I' || $first == 'O' || $first == 'U') {
   $v='starts with vowel';
} 
else {
   $v='does not start with vowel';
}
0 голосов
/ 30 января 2018

Будет хорошо использовать массив и сравнивать каждое значение 1 на 1 в цикле. Это дает преимущество в изменении длины массива тестов Напишите функцию, принимающую 2 параметра, 1 - это тестовый массив, а другой - значение, которое нужно протестировать.

$test_array = ('test1','test2', 'test3','test4');
for($i = 0; $i < count($test_array); $i++){
   if($test_value == $test_array[$i]){
       $ret_val = true;
       break;
   }
   else{
       $ret_val = false;
   }
}
0 голосов
/ 08 апреля 2011

Я не знаю, является ли $ var строкой, и вы хотите найти только эти выражения, но здесь все равно.

Попробуйте использовать preg_match http://php.net/manual/en/function.preg-match.php

if(preg_match('abc', $val) || preg_match('def', $val) || ...)
   echo "true"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...