You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

验证员工是否在列表中时判断始终为false的问题排查

问题描述

我尝试验证某医生是否在员工列表中,但判断语句始终返回false。$response变量存储了从REST API的GET请求获取的JSON数据,我已确认输入的信息确实存在于该JSON列表中。遍历列表时,匹配到对应JSON数据时应该判断为TRUE,但当前代码逻辑存在问题,寻求帮助。

HTML代码
<form method="post" action="personal-process.php">
    <label for ="emp_id">Verify Employee </label>
        <input type="text" name="emp_id" id="emp_id">

        <button type="submit">Enter</button>
        
    </form>
PHP代码
if(isset($_POST['emp_id'])){

    function debug($o){
        echo '<pre>';
        print_r($o);
        echo '</pre>';
      }
   
      debug($_POST);
    
    foreach($response['data'] AS $key => $value){
        echo $value ['name'];
        echo '<br>';
    }

    echo $_POST['emp_id'];
    
    if($value['name'] == $_POST['emp_id']){
        

        echo"Success";
    } elseif ($value['name'] != $_POST['emp_id']) {
        echo "Not In the list";
    } 
}
问题分析与修复

你的代码核心问题是判断语句放在了foreach循环外面,导致$value只保留了循环最后一次迭代的元素值,而非遍历过程中匹配到的目标元素。

正确逻辑是在循环内部逐个检查元素,找到匹配项后标记状态并跳出循环,循环结束后再根据标记输出结果。同时建议处理输入和数据的首尾空格,避免空格导致的匹配失败。

修复后的PHP代码:

if(isset($_POST['emp_id'])){
    function debug($o){
        echo '<pre>';
        print_r($o);
        echo '</pre>';
    }
   
    debug($_POST);
    
    $found = false; // 初始化匹配状态标记
    $input = trim($_POST['emp_id']); // 去除输入首尾空格

    foreach($response['data'] AS $key => $value){
        echo $value['name'] . '<br>';
        // 在循环内部检查当前元素是否匹配
        if(trim($value['name']) == $input){
            $found = true;
            break; // 找到匹配项后直接跳出循环,无需继续遍历
        }
    }

    echo $input;
    
    if($found){
        echo "Success";
    } else {
        echo "Not In the list";
    } 
}

内容的提问来源于stack exchange,提问作者xtremesnus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:55:20