PHP查找数组下一个元素时始终返回1的问题排查
问题分析与解决办法
嘿,我来帮你揪出代码里的问题!你的代码之所以总是返回1,核心错误出在搜索目标数组用错了,具体来看:
问题拆解
- 首先,
$keys = array_keys($users_emails);生成的是原数组的索引数组,也就是[0, 1, 2, 3, 4],里面全是数字。 - 你用
array_search($current, $keys)去查找字符串'Spence'在这个数字数组里的位置,显然找不到,所以返回false。 - 在PHP里,
false和数字运算会被隐式转换成0,所以false + 1就变成了1,最后取$keys[1]自然就是数字1了。
修正后的代码
你应该直接在原数组 $users_emails 里搜索当前元素的键,而不是在索引数组里找。另外还要处理边界情况(比如当前是最后一个元素时,下一个元素可以回到数组开头):
$users_emails = array('Spence', 'Matt', 'Marc', 'Adam', 'Paul'); $current = 'Spence'; // 直接在原数组中查找当前元素对应的键 $current_key = array_search($current, $users_emails); if ($current_key !== false) { $next_key = $current_key + 1; // 如果下一个键超出数组长度,回到第一个元素(可根据需求调整) if ($next_key >= count($users_emails)) { $next_key = 0; } $next = $users_emails[$next_key]; echo $next; // 这里会输出 Matt } else { echo "当前元素不在数组中哦"; }
关键注意点
- 一定要用
$current_key !== false判断元素是否存在,避免找不到元素时出现数组越界错误。 - 如果不需要循环,当当前元素是最后一个时,可以返回
null或者提示“没有下一个元素”,根据你的业务需求调整即可。
内容的提问来源于stack exchange,提问作者John Wiky
相关产品推荐
相关产品推荐

