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

Posted

技术标签:

【中文标题】如何为php中的任何数组提供索引【英文标题】:How provide indexing to any array in php 【发布时间】:2015-08-22 14:53:06 【问题描述】:

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

$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
)

结果数组没有自己的索引。是否可以提供索引?

【问题讨论】:

你尝试的代码在哪里? 【参考方案1】:

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

如果生成的索引不是您所期望的,请注意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() 要求两个数组的长度相同。除非您更新您的问题,否则我无法提供更多详细信息,但我希望这会有所帮助:)

【讨论】:

谢谢。实际上我需要在for循环中使用索引值,以便我可以从mysql表中检索其他属性数据。你能指导我怎么可能吗?? 我可以,但前提是您更新答案以更详细地解释您的意思 - 特别是如果您可以提供示例输入数据和您期望的结果。

以上是关于如何为php中的任何数组提供索引的主要内容,如果未能解决你的问题,请参考以下文章

如何为数组中的嵌套数组中的多个对象生成连续索引

如何为我的 IDE 编写/引用易于管理的 PHP 可调用函数

如何为apache提供cmd权限?

如何为数据库中的foreach数据添加索引?

如何为我的 php web 应用程序提供桌面通知? [复制]

如何为大型数据集创建 UITableView 索引