(澳门正规博彩十大网站) php有什么数据结构可以实现双向索引查询?

我也不知道该怎么表达,总之需求有点类似于C#里面的linq,
假如有如下数组

$test = [ a=>a1, b=>a1, c=>c1,
]

我现在可以通过$test[a]查询到a1,但是我也想通过a1来反查到a和b两个元素,请问如何在php中实现这个?

补充:有人说用foreach实现,但是我这个数组到后期有可能非常大,甚至大到几千上万,用foreach肯定效率不高。

已有的解决方案只能解决每个数组元素键值不一样的情况,也就是一对一映射的情况,1是array_search,2是先array_flip再用传统的$test[a1]查找。

在群里面请教大神解决了,array_keys就好了。

<?php
$a=array"a"=>"Dog","b"=>"Dog","c"=>5,"d"=>"5";
print_rarray_keys$a,"Dog";
//Array [0] => a [1] => b ?> 

直接上代码吧!~

手册中的array_search可以解决你的需求。

<?php
$array = array0 => blue, 1 => red, 2 => green, 3 => red;
$key = array_searchgreen, $array; // $key = 2;
$key = array_searchred, $array; // $key = 1;
?> 

没啥好办法,两个数组来搞吧

谢谢邀请, 因为数组结构的key肯定是唯一的, 但可能不同的key对应相同的值, 所以我所知道的, 要想实现c#linq, 需要保证数组的值唯一,

$test = [ a => a1, b => b1, c => c1, d => d1, e => d1
]; //去除重复的值
$test = array_unique$test;

去除重复值后, 使数组反转,

$test = [ a => a1, b => b1, c => c1, d => d1, e => d1
]; $test = array_unique$test; $wocao = array_flip$test;
var_dump$wocao;

反转结构把原数组的key当做值, 原数组的value 作为key, 如下

array4 { ["a1"]=> string1 "a" ["b1"]=> string1 "b" ["c1"]=> string1 "c" ["d1"]=> string1 "d"
}

现在, 可以实现类似c#的linq功能了

$test = [ a => a1, b => b1, c => c1, d => d1, e => d1
]; $test = array_unique$test; $wocao = array_flip$test; $test[a]; //a1
$wocao[a1]; //a

不足之处请多指出,,,

不就是根据值查询键么,一个 array_keys 就能解决了呀:

$arr = arraya => a1, b => a1, c => c1;
var_export array_keys$arr, a1 ; //输出键名 a 和 b

发表评论

电子邮件地址不会被公开。 必填项已用*标注