欢迎访问宙启技术站
智能推送

PHP中如何使用array_keys()函数获取数组中的键?

发布时间:2023-06-14 18:49:54

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中用于获取数组键名的函数,可用于索引数组和关联数组。在使用该函数时,需要指定需要获取键名的数组,并可选指定一个值用于查找指定元素的键名。该函数返回一个包含了所有键名的新数组。要点是要清楚自己的数组类型,指定是否严格比较键值或内容。