Laravel сопоставить строку с массивом - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь сопоставить значения из ввода пользователя ($index) с существующим массивом ($ppeWorn). Пользователь может выбрать более одного варианта. Когда я пытаюсь выяснить, есть ли ключи пользовательского ввода, соответствующие массиву $ppeWorn, я получаю только первый выбранный элемент.

Значение dd($indexArray):

array:2 [
  0 => "1"
  1 => "2"
]

Мой код:

case 7:
                        $index = ($parts[6]) ;

                        $ppeWorn = [
                            'None',
                            'Gloves',
                            'Fabric mask',
                            'Surgical/Medical mask',
                            'N95 mask (or equivalent)',
                            'Face shield or goggles/protective glasses',
                            'Disposable gown',
                            'Waterproof apron',
                        ];

                        $indexArray = explode(',', $index ) ;
                        dd($indexArray); 
                                                              
                            foreach($indexArray as $value) {

                                if ($ppeWorn[$value]) {

                                    $session["ppes"] = $ppeWorn[$value];
        
                                    $this->setSession($session);
        
                                    dd($session);
        
                                    $response = $this->sessionOpeningTag . "Have you received IPC training?\n1. Yes\n2. No";
                                
                                } else {

                                    $response = $this->sessionClosingTag . "You have entered an invalid answer";
        
                                    $this->deleteSession($session);
        
                                }  
                                 
                            }
                        
                        break;

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Вы можете проверить существующие значения от пользователя input($index) до существующего array($ppeWorn). Используя этот способ, ___

$checkValue = array_key_exists($users_input,$ppeWorn);
echo $checkValue;

возвращает true, если ключ существует в $ppeWorn;

0 голосов
/ 14 июля 2020

Итак, ваш $input - это массив, но его первый элемент - "1,2". Итак, насколько я понимаю ваш вопрос и код (обновите код, предоставьте только полезные материалы), вы хотите перебрать $index и сопоставить значения с switch-case.

Для этого вы можете попробовать :

$indexArray = explode(',', $index[0]; // cause $index[0] has a string which has 
                                      // some comma separated value

foreach($indexArray as $value) {
    ... ... ...
    // Do your stuffs here

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...