PHP多API Key校验问题:数组匹配返回失败求助
解决方案:用
in_array()检查数组中是否存在指定API Key 嘿,我懂你碰到的问题了!当你把$listkey从单个字符串改成数组后,原来的==比较逻辑直接失效了——因为PHP里字符串和数组直接用==比较永远会返回false,所以不管你传的是aaa还是bbb,都会走到else分支返回Failed。
正确的做法是用in_array()函数
这个函数就是专门用来检查某个值是否存在于数组中的,修改后的完整代码如下:
<?php $listkey = array("aaa", "bbb", "ccc", "ddd"); $apikey = $_GET['apikey']; if (in_array($apikey, $listkey)) { $response["error"] = TRUE; $response["respon"] = "Success"; echo json_encode($response); } else { $response["error"] = FALSE; $response["respon"] = "Failed"; echo json_encode($response); } ?>
额外提示:开启严格类型检查
如果你需要确保apikey的类型和数组里的元素完全一致(比如避免把字符串"123"和数字123当成匹配),可以给in_array()加上第三个参数true,开启严格模式:
if (in_array($apikey, $listkey, true)) { // 你的逻辑 }
这样修改后,传入aaa、bbb这些合法值时,接口就会正确返回Success啦!
内容的提问来源于stack exchange,提问作者Faraaz Farzain Permadi
相关产品推荐
相关产品推荐

