PHP中如何重置数组键名?获取无键名保留的首个匹配数组元素
嘿,我来帮你搞定这两个PHP数组的问题!
问题1:如何在PHP中重置数组键名?
最直接且常用的方法就是用array_values()函数。它会返回一个新数组,自动把原数组的键名重置为从0开始的连续数字索引,完全忽略原来的键(不管是数字还是字符串类型的键都适用)。
举个例子:
$originalArr = [3 => 'apple', 7 => 'banana', 'name' => 'cherry']; $resetArr = array_values($originalArr); // 输出结果:[0 => 'apple', 1 => 'banana', 2 => 'cherry']
这个函数操作简单,而且是PHP内置的,性能也很靠谱。
问题2:获取首个匹配元素并重置键名
你遇到的array_intersect保留原键名的问题很好解决,分两种情况来看:
情况1:需要所有交集元素,只是要重置键名
直接把array_intersect的结果传给array_values()就行,它会帮你把键名重新从0开始排序:
$a = ['three', 'two', 'one']; $b = ['five', 'one']; $output = array_values(array_intersect($a, $b)); // 输出结果:[0 => 'one']
情况2:只需要第一个匹配的元素(更高效)
如果你只想要两个数组中第一个出现的匹配元素,没必要计算所有交集,直接遍历第一个数组,找到第一个在第二个数组里的元素就停止,这样性能更好:
$a = ['three', 'two', 'one']; $b = ['five', 'one']; $result = []; foreach ($a as $item) { if (in_array($item, $b)) { $result[] = $item; // 自动用0作为键名 break; // 找到第一个就退出循环,不用继续遍历 } } // $result 的结果就是 [0 => 'one']
如果你的数组比较大,第二种方法会节省不少时间,因为不用处理整个数组的交集运算。
内容的提问来源于stack exchange,提问作者sn n
相关产品推荐
相关产品推荐

