in_array和array_keys哪个效率更快判断一个百万级别的数值数组中是否存在对应的值,如题.求教! 分享到: ------解决方案--------------------in_array 是顺序查找 array_keys 是查哈希表 当然是后者快,但后者不可能有重复值------解决方案-------------------- 引用: Quote: 引用: in_array 是顺序查找 array_keys 是查哈希表 当然是后者快,但后者不可能有重复值 后者可以有重复值的吧,返回一个数组,我做过测试可以有相同的值。 你试试,可以的话向官网报bug------解决方案-------------------- 引用: Quote: 引用: in_array 是顺序查找 array_keys 是查哈希表 当然是后者快,但后者不可能有重复值 后者可以有重复值的吧,返回一个数组,我做过测试可以有相同的值。 key哪里来的重复值???------解决方案-------------------- 引用: Quote: 引用: Quote: 引用: in_array 是顺序查找 array_keys 是查哈希表 当然是后者快,但后者不可能有重复值 后者可以有重复值的吧,返回一个数组,我做过测试可以有相同的值。 你试试,可以的话向官网报bug 哈哈哈 你太搞了...------解决方案--------------------它的第二个参数是可选择的,如果空着会返回所有键名组成的数组。如果指定,如你的需求,它只会返回对应的一个键名。------解决方案--------------------楼主,你的需求,使用这个方法解决是否合适?------解决方案--------------------你做什么业务啊,全放到数组中,占用内存,还不如在数据库中捞取你要的------解决方案--------------------1楼大神说的是对的 in_array 是顺序查找 array_keys 是查哈希表 当然是后者快,但后者不可能有重复值 小菜补充一下,如果数组中有重复的键值,那么按键-值方式取时,得到的是最后的那个键对应的值,但是用array_keys取键时返回的是第一次出现的键。 另外,这么大的数据量的话完全可以放在memcache这样的nosql里了,速度够快,对你的需求也完全满足,get一下就知道是否存在了------解决方案-------------------- 引用: 1楼大神说的是对的 in_array 是顺序查找 array_keys 是查哈希表 当然是后者快,但后者不可能有重复值 小菜补充一下,如果数组中有重复的键值,那么按键-值方式取时,得到的是最后的那个键对应的值,但是用array_keys取键时返回的是第一次出现的键。 另外,这么大的数据量的话完全可以放在memcache这样的nosql里了,速度够快,对你的需求也完全满足,get一下就知道是否存在了