php-查找键具有给定值的数组
我有一系列的词汇,如:php-查找键具有给定值的数组,php,arrays,dictionary,indexing,Php,Arrays,Dictionary,Indexing,我有一系列的词汇,如: $arr=array( 排列( 'id'=>'1', 'name'=>'machin', ), 排列( 'id'=>'2', 'name'=>'chouette', ), ); 如何找到包含id2(chouette)的数组的名称 我是不是必须对数组重新编制索引 谢谢大家,我被迫在数组中循环(这是我想要避免的),我认为这是一些查找功能,比如Python。因此,我想我将使用id重新编制索引,这有点粗糙,但这将为您提供名称 $name = false; foreach($a
$arr=array(
排列(
'id'=>'1',
'name'=>'machin',
),
排列(
'id'=>'2',
'name'=>'chouette',
),
);
如何找到包含id
2(chouette)的数组的名称
我是不是必须对数组重新编制索引
谢谢大家,我被迫在数组中循环(这是我想要避免的),我认为这是一些查找功能,比如Python。因此,我想我将使用
id
重新编制索引,这有点粗糙,但这将为您提供名称
$name = false;
foreach($arr as $v) {
if($v['id'] == '2') {
$name = $v['name'];
break;
}
}
echo $name;
因此,不必强制您对数组重新编制索引,但这会使事情变得更简单。只需找到包含要查找的id的数组索引即可。
$name;
foreach ($arr as $value){
if ( $value['id'] == 2 ){
$name = $value['name'];
break;
}
}
因此,关于这个话题,我们已经有了很多资料
假设您的实际应用程序中有一个包含大量数据的大数组,那么它可能太慢(不合您的口味)。在这种情况下,您确实需要修改数组的结构,以便可以更快地查找,例如,使用id作为名称的索引(如果您只对名称感兴趣)。我认为重新索引信息可能非常有用。如果ID是唯一的,请尝试以下操作:
$newarr = array();
for($i = 0;$i < count($arr);$i++){ $newarr[$arr[$i]['id']] = $arr[$i]['name']; }
foreach($newarr as $key => $value){
if($value == "machin"){
return $key;
}
}
然后您可以使用“foreach”遍历数组,如下所示:
$newarr = array();
for($i = 0;$i < count($arr);$i++){ $newarr[$arr[$i]['id']] = $arr[$i]['name']; }
foreach($newarr as $key => $value){
if($value == "machin"){
return $key;
}
}
但当然,这同样适用于旧阵列:
foreach($arr as $item){
if($item['name'] == "machin"){
return $item['id'];
}
}
这取决于您计划对阵列执行的操作;-) array\u key\u exist()
是检查密钥的函数foreach
将帮助您进入多维数组。此函数将帮助您获取数组的名称
元素,并允许您指定不同的id
值
function findKey($bigArray, $idxVal) {
foreach($bigArray as $array) {
if(array_key_exists('id', $array) && $array['id'] == $idxVal) {
return $array['name'];
}
}
return false;
}
//Supply your array for $arr
print(findKey($arr, '2')); //"chouette"
由于for循环是实现这一点的最佳方法,我建议您更改数组,使id成为数组索引。例如:
$arr = array(
1 => 'machin',
2 => 'chouette',
);
通过这种方式,您可以直接获得调用$arr[2]的名称。无循环并保持程序在线性时间内运行。OP感兴趣的是为给定的
id
查找名称。。。因此,在数组上使用reindex方法后,您可以使用$newarr['1']
来获得machin
。是的,这是我想要避免的,但我似乎不得不这样做