Как сделать кондиционирование в цикле foreach - PullRequest
0 голосов
/ 24 марта 2020

У меня есть foreach l oop для студентов $ array, где я пытаюсь сравнить параметр $ find, который я получаю из формы, со значением $ key массива $ Students -> если они совпадают, проверяется, зачислен ли студент (это работает), и если нет, то должно быть напечатано «Не найдено», но ничего не происходит .. Я перепробовал много вещей, но ничего не работает, пожалуйста, помогите!

Я перевел это с finni sh так что могут быть опечатки, но проблема в синтаксисе ..

      //values come from a file
      $students[$key] = array('key' => $key, 'name' => $name, 'occ' => $occ);

        foreach ($students as $value) {

            //This doesn't work - $find comes from a form
                        if ($value["key"] != $find) {
                        $phase= "Not found";
                        $enroll= "";
                       //echo "$phase $enroll";
                       continue;
                        }

            //This works
            elseif ($value["key"] == $find) {

                $phase= $value["name"] . "(" . $value["key"] . "):";

                    if ($value["occ"] == "1") { 
                    $enroll= " yes";
                    continue;
                    } 

                    elseif ($value["occ"] == "0") {
                    $enroll=  "no";
                    continue;
                    } 
            } 

            //It prints out for example "John(1234): yes"
            //But nothing if the studentnumber = key doesn't match.. 
            echo "$phase $enroll";


        } 

1 Ответ

0 голосов
/ 24 марта 2020

Вам не нужно проверять $value["key"] дважды

 $students[$key] = array('key' => $key, 'name' => $name, 'occ' => $occ);

foreach ( $students as $value ) {
    $phase= "Not found";
    $enroll= "";
    if ( $value["key"] == $find ) {
        $phase= $value["name"] . "(" . $value["key"] . "):";
        $enroll = ( $value["occ"] == "1" ) ? " yes" : "no";
    }
    echo "$phase $enroll";
}
...