PHP数组循环中匹配键并输出值:如何检查键是否存在
问题分析与解决方案
你给出的是一个关联数组,而非对象数组,原循环里用$ar->category的写法不符合数组的访问规则;同时原foreach只遍历了数组的值,没有获取键,无法完成“检查指定键是否存在”的需求。以下是正确的处理方式:
1. 遍历数组时检查指定键与对应值
如果你需要遍历整个数组,同时判断某个键是否存在且对应值符合条件,要把foreach改成键值对遍历的形式:
示例代码
// 你的原数组 $array = [ 'category' => 'abc', 'post_tag' => 'test', 'nav_menu' => 'Home', 'link_category' => 'Link 1', 'post_format' => 'format' ]; // 遍历键值对 foreach($array as $key => $value) { // 检查当前键是否为目标键,且对应值匹配 if ($key === 'category' && $value === 'abc') { echo 'found'; } }
2. 直接检查指定键是否存在(无需遍历)
如果只是需要判断某个特定键是否存在且值符合条件,完全不需要遍历数组,直接用数组函数或下标判断即可:
方法一:使用array_key_exists
array_key_exists会严格检查键是否存在,即使键对应的值为null也会返回true:
if (array_key_exists('category', $array) && $array['category'] === 'abc') { echo 'found'; }
方法二:使用isset
isset会同时检查键是否存在且对应的值不为null,如果值为null会返回false,可根据实际需求选择:
if (isset($array['category']) && $array['category'] === 'abc') { echo 'found'; }
内容的提问来源于stack exchange,提问作者Saroj Patel
相关产品推荐
相关产品推荐

