为了账号安全,请及时绑定邮箱和手机立即绑定

php有什么数据结构可以实现双向索引查询?

php有什么数据结构可以实现双向索引查询?

墨色风雨 2018-10-16 17:24:45
我也不知道该怎么表达,总之需求有点类似于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']查找。
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

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

<?php

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;

$key = array_search('red', $array);   // $key = 1;

?> 


查看完整回答
反对 回复 2018-10-29
?
潇湘沐

TA贡献1816条经验 获得超6个赞

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

<?php

$a=array("a"=>"Dog","b"=>"Dog","c"=>5,"d"=>"5");

print_r(array_keys($a,"Dog"));

//Array ( [0] => a [1] => b )

 ?>

 

直接上代码吧!~


查看完整回答
反对 回复 2018-10-29
  • 2 回答
  • 0 关注
  • 1136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信