如何为 php 中的任何数组提供索引

How provide indexing to any array in php

我正在尝试使用 php 相交函数比较两个数组。 我正在使用以下代码

$input_array=array();
$input_array=explode("," , $_POST['list']);
$array = array();
$result1 =mysql_query("SELECT b_no FROM abc");

while($fetch_array=mysql_fetch_array($result1)){
    $array[] = $fetch_array['b_no'];
}

$result=array_intersect($input_array,$array);
echo"<pre>";
print_r($result);
echo"</pre>";

结果是这样的:

Array
(
    [4] => 443829
    [5] => 952040
)

生成的数组没有自己的索引。可以提供索引吗?

可以提供索引,但您需要指定所需的索引。

如果生成的索引不是您所期望的,请注意 array_intersect() 仅比较每个数组的值,并保留每个匹配项的第一个数组的索引或键。

如果您的要求也匹配关联数组的键(虽然我推断您不是根据您的示例来判断),您可以使用 array_intersect_assoc().

如果您只想 'reset' 索引,您可以使用 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() - 它接受两个数组,一个作为键,另一个other 作为值,为数组显式定义一组新的索引或键。例如:

$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()要求两个数组的长度相同。除非你更新你的问题,否则我真的无法提供更多细节,但我希望这会有所帮助:)