PHP新手求助:如何不使用for循环获取目标数组元素键名
仅输出目标元素键名的解决方案(不使用for循环)
方法1:优化foreach循环逻辑
你原代码的问题是每次循环都会输出内容,导致匹配到目标时也会带上前后的提示。可以加入状态标记,找到目标后输出键名并终止循环,循环结束后再判断是否输出不存在的提示:
<?php $programmingLanguages = ['php','java','giga']; $isFound = false; foreach ($programmingLanguages as $key => $language) { if ($language == 'java') { echo $key; $isFound = true; break; // 找到目标后立即退出循环,避免多余遍历 } } // 循环结束后如果没找到目标,再输出提示 if (!$isFound) { echo 'Doesnt exist'; } ?>
方法2:使用PHP内置函数array_search()
直接用array_search()函数查找元素对应的键,这个函数会返回匹配元素的键,找不到则返回false,代码更简洁高效:
<?php $programmingLanguages = ['php','java','giga']; $targetKey = array_search('java', $programmingLanguages); // 注意要用!==判断,避免元素键为0时被误判为false if ($targetKey !== false) { echo $targetKey; } else { echo 'Doesnt exist'; } ?>
内容的提问来源于stack exchange,提问作者Raksha Nair
相关产品推荐
相关产品推荐

