如何为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()

如果你想简单地"重置"索引,你可以使用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()要求两个数组的长度相同。我真的不能提供更多的细节,除非你更新你的问题,但我希望这有助于:)