如何编写PHP函数判断指定值是否在二维数组第二维度的指定键中
实现二维数组的
valueExists函数 嘿,这事儿不难,我来帮你捋清楚!首先先把你提到的二维数组用标准PHP代码形式呈现出来,方便后续操作:
$targetArray = [ ['category' => 'Category 1'], ['category' => 'Category 2'], ['category' => 'Category 3'] ];
接下来咱们实现valueExists函数,核心逻辑就是遍历外层数组的每一个子元素(也就是第二维度的数组),逐个检查是否存在指定键,并且对应的值和传入的目标值匹配。这里要注意个小细节:如果某个子数组里没有目标键,直接跳过就行,避免触发报错。
基础遍历版实现
function valueExists($key, $value, $array) { // 循环遍历外层数组的每一个子数组 foreach ($array as $item) { // 先确认子数组存在目标键,再严格匹配值 if (isset($item[$key]) && $item[$key] === $value) { return true; // 找到匹配项,直接返回true终止函数 } } // 遍历完所有子数组都没找到匹配,返回false return false; }
哦对了,你原来的函数模板里没把目标数组传进去,我这里补上了$array参数,这样函数更通用,不会局限于某一个固定数组~
简洁内置函数版实现
如果想写得更简洁,还可以用PHP内置的array_column函数先把指定键的所有值提取成一维数组,再用in_array检查:
function valueExists($key, $value, $array) { // 提取所有子数组中$key对应的value,组成一维数组 $allValues = array_column($array, $key); // 第三个参数true表示严格匹配(类型+值都要一致) return in_array($value, $allValues, true); }
这种写法更清爽,array_column会自动跳过那些没有目标键的子数组,不用额外做判断。
测试示例
用你给的测试场景验证一下:
$targetArray = [ ['category' => 'Category 1'], ['category' => 'Category 2'], ['category' => 'Category 3'] ]; if (valueExists("category", "Category 2", $targetArray)) { echo "Category 2 is found in array."; } else { echo "Category 2 not found in array."; }
运行这段代码会输出Category 2 is found in array.,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Anonymouse
相关产品推荐
相关产品推荐

