如何为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 可调用函数