本文介绍如何用 php 编写一个接收字符串和数组作为参数的函数,准确判断该字符串是否存在于数组中,并统一返回 `'true'` 或 `'false'` 字符串结果。
在 PHP 开发中,经常需要判断某个值是否存在于给定数组中。初学者容易陷入循环遍历 + 即时输出的误区(如在 foreach 中对每个元素单独 echo),导致输出多个结果、逻辑混乱。正确做法是:先完成判断逻辑,再统一返回或输出单一结果。
PHP 内置函数 in_array() 是专为此类需求设计的——它高效、简洁、语义清晰,可直接返回布尔值(true / false),我们再据此转换为字符串即可:
function nameexistCheck($name, $names) {
return in_array($name, $names) ? 'true' : 'false';
}
// 调用示例
echo nameexistCheck('Johnny', ['Jack', 'Sarah', 'Andy', 'Johnny']); // 输出:true
echo nameexistCheck('Johnny', ['Jack', 'Sarah', 'Andy']); // 输出:false? 注意:in_array() 默认进行松散比较(==)。若需严格类型匹配(例如区分 '1' 和 1),可传入第三个参数 true:in_array($name, $names, true)
你提供的尝试中存在两个关键错误:
此外,手动硬编码数组(如 $names = array('Johnny', 'Jack'))违背了函数参数的设计初衷——数组应由调用方动态传入,而非在函数内部固定。
如需更专业的返回形式(推荐用于实际项目),可直接返回布尔值,由调用方决定如何展示:
function nameExists($name, $names) {
return in_array($name, $names);
}
// 使用示例
if (nameExists('Johnny', ['Jack', 'Sarah', 'Johnny'])) {
echo 'Found!';
} else {
echo 'Not found.';
}这比返回字符串更符合 PHP 的类型习惯,也便于后续条件判断与单元测试。