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

如何编写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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:35:33