сравнение значений массива для оператора if php

#php

#php

Вопрос:

у меня есть список имен james, steve, manson, charles в массиве, и я использую функцию explode для их разделения.

  $pieces = explode(",", $full);

foreach ($pieces as $p ){

    $piece[]=$p;
}
  

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

 $piece[0];
$piece[1];
  

но порядок время от времени меняется в зависимости от входных данных, поэтому я не могу провести сравнение. может кто-нибудь подсказать, как установить значения, чтобы я мог провести сравнение, как показано ниже

  if ($piece==='manson'){
//do something;
}else{
//do something
}

 if ($piece==='steve'){
//do something;
}else{
//do something
}
  

Комментарии:

1. Похоже, вы ищете switch ?

Ответ №1:

 $full = 'james,steve,manson,charles';
$pieces = explode(",", $full);
  

использование цикла

 foreach($pieces as $p ) {
    // $p holds the name
    if($p==='manson') {
        //do something;
    } elseif($p==='steve') {
        //do something;
    } else {
        //do something
    }
}
  

также вы могли бы просто проверить имя в массиве вместо зацикливания

 if(in_array('steve',$pieces)) {
    echo 'We have Steve in the house';
}
  

или, как предложил Джон, используя переключатель

 foreach($pieces as $p) {
    switch ($p) {
        case 'manson':
        case 'steve':
        case 2:
            echo "Fist pump for ".$p;
            break;
        default:
            echo "no fist in the air";
    }
}
  

Комментарии:

1. оператор foreach if повторял то же содержимое, но опция in_array работала отлично.. Большое вам спасибо…