PHP中如何使用array_keys()函数获取数组中的键?
PHP中的array_keys()函数是用于获取数组中所有键名(即数组中的所有key)的函数。该函数可用于索引数组和关联数组。
语法:
array array_keys(array $array [, mixed $search_value [, bool $strict ]])
参数说明:
- $array:需要获取键名的数组。
- $seach_value:可选参数,用于指定需要查找的元素的值。如果指定了该参数,则只返回该元素对应的所有键名。
- $strict:可选参数,用于指定查找是否为“全等比较”,即类型和数值都要匹配。如果该参数设为TRUE,则比较时类型也会被考虑。默认为FALSE,即只考虑数值。
返回值类型:
- 返回一个包含所有键名的数组。
- 如果找不到与指定的$search_value匹配的元素,则返回一个空数组。
下面分别介绍如何在索引数组和关联数组中使用array_keys()函数。
1. 索引数组中使用array_keys()函数
索引数组就是按照顺序排列的数组,键名是0、1、2等依次递增的数字。例如下列数组:
$numbers = array(1, 2, 3, 4, 5);
这是一个包含5个元素的索引数组,其键名分别是0、1、2、3、4。
如果想获取该数组的所有键名,只需调用array_keys()函数:
$keys = array_keys($numbers); print_r($keys);
输出:
Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
)
返回一个包含了所有键名的新数组。
也可以通过指定第二个参数来获取指定元素的键名。例如,下面的代码用于获取数字2在数组中出现的所有位置:
$keys = array_keys($numbers, 2); print_r($keys);
输出:
Array
(
[0] => 1
)
上面的代码中,第二个参数是2,表示要查找值为2的元素在数组中所有出现的位置,结果返回了一个只包含1(即数字2所在的位置)的数组。
2. 关联数组中使用array_keys()函数
关联数组是指以字符串作为键名的数组。例如,下列数组:
$students = array(
"John" => 20,
"Peter" => 21,
"Mary" => 22,
"Jane" => 23
);
这是一个包含4个元素的关联数组,其键名分别是"John"、"Peter"、"Mary"、"Jane"。
如果想获取该数组的所有键名,只需调用array_keys()函数:
$keys = array_keys($students); print_r($keys);
输出:
Array
(
[0] => John
[1] => Peter
[2] => Mary
[3] => Jane
)
返回一个包含了所有键名的新数组。
也可以通过指定第二个参数来获取指定元素的键名。例如,下面的代码用于获取年龄为22岁的学生的姓名:
$keys = array_keys($students, 22); print_r($keys);
输出:
Array
(
[0] => Mary
)
上面的代码中,第二个参数是22,表示要查找值为22的元素在数组中所有出现的键名,结果返回了一个只包含"Mary"(即年龄为22岁的学生的姓名)的数组。
需要注意的是,该函数在查找时默认是区分数字和字符串的,因此在计算每个元素的值时都会进行隐式类型转换。如果想进行“全等比较”,需要设置第三个参数为TRUE,例如:
$keys = array_keys($students, "22", TRUE); print_r($keys);
输出:
Array
(
[0] => Mary
)
上面的代码中,第三个参数为TRUE,表示进行全等比较,即类型和数值都要匹配,因此只返回了年龄为22岁的学生的姓名,而不是年龄含有数字2的所有学生的姓名。
总结:
array_keys()函数是PHP中用于获取数组键名的函数,可用于索引数组和关联数组。在使用该函数时,需要指定需要获取键名的数组,并可选指定一个值用于查找指定元素的键名。该函数返回一个包含了所有键名的新数组。要点是要清楚自己的数组类型,指定是否严格比较键值或内容。
