可以提供索引,但您需要指定所需的索引。
如果生成的索引不是您所期望的,请注意,array_intersect()它只比较每个数组的值,并保留每个匹配的第一个数组的索引或键。
如果您的要求还匹配关联数组的键(尽管我推断您不是从您的示例中判断),您可以使用array_intersect_assoc().
如果您想简单地“重置”您可以使用的索引array_values()。例如:
<?php
$a = [2 => 1, 2, 3];
$b = [2, 3, 4];
$intersect = array_intersect($a, $b);
print_r($intersect);
// Original keys are retained:
//
// Array
// (
// [3] => 2
// [4] => 3
// )
print_r(array_values($intersect));
// Original keys are discarded:
//
// Array
// (
// [0] => 2
// [1] => 3
// )
另一方面,如果您想要使用一组特定的键,例如['foo', 'bar']您可以使用array_combine()- 它接受两个数组,一个作为键,另一个作为值,以显式定义一组新的索引或键数组。例如:
$keys = ['foo', 'bar'];
print_r(array_combine($keys, $intersect);
// Array
// (
// [foo] => 2
// [bar] => 3
// )
$indexes = [100, 200];
print_r(array_combine($indexes, $intersect));
// Array
// (
// [100] => 2
// [200] => 3
// )
请注意,array_combine()要求两个数组的长度相同。除非您更新您的问题,否则我无法提供更多详细信息,但我希望这会有所帮助:)