PHP 如何检查一个数组是关联数组还是顺序数组
什么是关联数组
关联数组是一种特殊类型的数组,其中每个元素与一个特定的键相关联,而不是像顺序数组那样分配一个数字索引。换句话说,你不是通过位置访问数组元素,而是通过它们对应的键来访问它们。
在关联数组中,键可以是字符串或整数。数组中的每个键都是唯一的,意味着没有两个元素可以具有相同的键。关联数组中的值可以是任何数据类型,如字符串、数字、布尔值、对象甚至其他数组。
示例
<?php
person = array(
'name' => 'John',
'age' => 30,
'city' => 'New York'
);
echoperson['name'];
echo person['age'];
echoperson['city'];
?>
输出
John30New York
什么是顺序数组
顺序数组,也称为索引数组,是一种数组类型,其中元素被分配数字索引以表示它们在数组中的位置。索引从第一个元素的0开始,并为每个后续元素递增1。
在顺序数组中,元素的键由PHP自动分配,基于将元素添加到数组中的顺序。这些键是表示每个元素位置或索引的整数。
示例
<?php
// Example of sequential array
arr = array(10,20,30,40);
// 1st element
echoarr[0] . "
";
// 2nd element
echo arr[1] . "
";
// 3rd element
echoarr[2] . "
";
// 4th element
echo $arr[3] . "
";
?>
输出
10
20
30
40
如何在PHP中检查数组是关联数组还是顺序数组
要在PHP中检查数组是关联数组还是顺序数组,可以使用array_keys()函数,并将结果数组与原始数组进行比较。
array_keys()函数
array_keys()函数用于从数组中检索所有的键或一部分键。它返回一个包含输入数组键的新数组。
语法
array_keys()函数的一般语法如下:
array_keys(array array, mixedsearch_value =
null, bool $strict = false): array
参数
$ array : 您希望从中提取键的输入数组。
$ search_value (可选) : 如果提供了该参数,array_keys() 将只返回给定值的键。
$ strict (可选) : 确定比较是否应该是严格的 (true) 还是宽松的 (false)。默认情况下,它设置为 false,也就是使用宽松比较。
示例
<?php
array = ['apple', 'banana', 'orange'];keys = array_keys(array);
if (keys !== range(0, count($array) - 1)) {
// Associative array
echo 'Associative array';
} else {
// sequential array
echo 'Sequential array';
}
?>
输出
Sequential array
在这个示例中,我们有一个数组$ array,其中包含元素’apple’、’banana’和’orange’。我们使用array_keys()函数获取数组的键,然后我们使用!运算符将这些键与从0到count($ array)-1的数字索引范围进行比较。如果数组的键(keys)与预期的顺序索引不相等,则表示数组是关联数组。在这种情况下,输出将是’关联数组’。如果数组的键与预期的顺序索引匹配,则表示数组是顺序数组。在这种情况下,输出将是’顺序数组’。
结论
在PHP中,您可以通过检查其键来判断数组是关联数组还是顺序数组。如果键是非数字或者不是从0开始的连续数字顺序,那么数组被认为是关联数组。否则,如果键是从0开始的连续整数,那么数组是顺序数组。要执行此检查,您可以使用array_keys()函数获取数组键,并将它们与预期的模式进行比较。