要完成这已工作,我们需要下面两个函数:

array_search — 在数组中搜索给定的值,如果成功则返回相应的键名

array_keys — 返回数组中部分的或所有的键名

注意这里提到的是键名,对于一维数组,索引就是其默认键名,所以获取一维数组某元素在数组中的位置的方法示例如下:

$arr = [1,3,'a',"bc"];
echo var_dump($arr); //输出如下
//array (size=4)
//  0 => int 1
//  1 => int 3
//  2 => string 'a' (length=1)
//  3 => string 'bc' (length=2)

array_search('a',$arr); //2
array_search("3",$arr,false); //1
array_search("3",$arr,true); // 严格模式,相当于===,无法匹配,返回false.

PHP的数组下标和其他语言不同,不一定必须从零开始,可以手动指定,这也是为什么上面函数解释中强调获取的是键名的原因,例子如下: 

$arr = [3=>1,3,'a',"bc"];
echo var_dump($arr); //输出如下
//array (size=4)
//  3 => int 1
//  4 => int 3
//  5 => string 'a' (length=1)
//  6 => string 'bc' (length=2)

array_search('a',$arr); //5
array_search("3",$arr); //4

对于多维数组,可以通过array_keys先获取数组键名,然后再通过array_search获取键名的准确位置:

$arr = ["1"=>1,"fdsfd"=>'a',5,"bc"=>3];
echo var_dump($arr);
//array (size=4)
//  1 => int 1
//  'fdsfd' => string 'a' (length=1)
//  2 => int 5
//  'bc' => int 3
$keys = array_keys($arr); //提取数组的键名为一个顺序数组。
echo var_dump($keys);
//array (size=4)
//  0 => int 1
//  1 => string 'fdsfd' (length=5)
//  2 => int 2
//  3 => string 'bc' (length=2)
echo array_search('fdsfd',$arr); //false,值中并不存在
echo array_search('fdsfd',$keys); //1
echo array_search("5",$arr); //2
echo array_search("5",$keys); //false
已赞 2 0 评论