首页 > 解决方案 > 如何在 foreach 循环中进行调节

问题描述

我有一个数组 $students 的 foreach 循环,我试图将我从表单中获得的参数 $find 与 $students 数组的 $key 值进行比较 -> 如果它们匹配它检查学生是否注册(这有效),如果不应该打印“未找到”,但它没有做任何事情..我尝试了很多东西,但没有任何效果,请帮忙!

我是从芬兰语翻译过来的,所以可能有错字,但问题出在语法上。

      //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";


        } 

标签: phpforeach

解决方案


你不需要检查$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";
}

推荐阅读