最近在帮一个站长朋友写一个屏蔽特定类目是否可以访问功能的时候,一下子脑子懵逼了,就是脑子里不存在特定的索引,但是我又依稀记得在PHP中肯定有特定API方法可以快速的查找对应的数组是否存某个值/特定的key值,记不起来,还能咋办呢?
所以只好求助于万能的搜索引擎了,很快就能查找到相关的资料,随即写文记录下来,加深印象。
搜索数组,与之有关的会有以下几个API方法:
1、array_search(value,array,strict)
在数组中搜索某个键值,并返回对应的键名,如果在数组中找到指定的键值,则返回对应的键名,否则返回 false。如果在数组中找到键值超过一次,则返回第一次找到的键值所匹配的键名。如果没找到,则返回 false。注意在 PHP 4.2.0 之前,函数在失败时返回 null 而不是 false。同样如果第三个参数 strict 被指定为 true,则只有在数据类型和值都一致时才返回相应元素的键名。
<?php $a = array("a" => "red", "b" => "green", "c" => "blue"); echo array_search("red", $a);//a ?>
2、array_key_exists(key,array)
检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false,需要注意的地方的是,如果您在指定数组的时候省略了键名,将会生成从 0 开始并且每个键值对应以 1 递增的整数键名。
<?php $a = array("Volvo" => "XC90", "BMW" => "X5"); if (array_key_exists("Volvo", $a)) { echo "Key exists!"; } else { echo "Key does not exist!"; } ?>
3、in_array(value,array,type)
在数组array中搜索指定的value值,type是可选参数,如果设置该参数为 true ,则检查搜索的数据与数组的值的类型是否相同,即恒等于(区分大小写)。
<?php $sites = array("Google", "Runoob", "Taobao", "Facebook"); if (in_array("Runoob", $sites)) { echo "找到匹配项!"; } else { echo "没有找到匹配项!"; } ?>
最后,我想说的是,我个人感觉,更多的时候,如果你的数组是个索引数组大多数情况下会数组用in_array(),而如果你的数组是个关联数组的话,那么会用array_search()/array_key_exists(),是的这是我的理解和感觉,当然了,如果你不知道什么是索引数组和关联数组的话,可以看这篇文章《关于PHP中的索引数组和关联数组之间有存在什么区别吗?》。