如何在 PHP 中检查数组是关联数组还是顺序数组
什么是关联数组?
关联数组是一种数组类型,其中每个元素都与一个特定的键相关联,而不是像顺序数组那样分配一个数字索引。换句话说,您可以使用相应的键访问它们,而不是按其位置访问数组元素。
在关联数组中,键可以是字符串或整数。每个键在数组中都是唯一的,这意味着没有两个元素可以具有相同的键。关联数组中的值可以是任何数据类型,例如字符串、数字、布尔值、对象,甚至其他数组。
示例
<?php $person = array( 'name' => 'John', 'age' => 30, 'city' => 'New York' ); echo $person['name']; echo $person['age']; echo $person['city']; ?>
输出
John30New York
什么是顺序数组?
顺序数组,也称为索引数组,是一种数组类型,其中元素被分配数字索引,这些索引表示它们在数组中的位置。索引从第一个元素的 0 开始,并且对于每个后续元素递增 1。
在顺序数组中,元素的键由 PHP 根据元素添加到数组的顺序自动分配。这些键是表示每个元素的位置或索引的整数。
示例
<?php // Example of sequential array $arr = array(10,20,30,40); // 1st element echo $arr[0] . "
"; // 2nd element echo $arr[1] . "
"; // 3rd element echo $arr[2] . "
"; // 4th element echo $arr[3] . "
"; ?>
输出
10 20 30 40
如何在 PHP 中检查数组是关联数组还是顺序数组
要检查 PHP 中的数组是关联数组还是顺序数组,可以使用 array_keys() 函数并将生成的键数组与原始数组进行比较。
Array_keys() 函数
PHP 中的 array_keys() 函数用于从数组中检索所有键或键的子集。它返回一个包含输入数组键的新数组。
语法
array_keys() 函数的一般语法为
array_keys(array $array, mixed $search_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
在此示例中,我们有一个包含元素 'apple'、'banana' 和 'orange' 的数组 $array。我们使用 array_keys() 函数检索数组的键,然后使用 !== 运算符将这些键与从 0 到 count($array) - 1 的数字索引范围进行比较。如果数组的键 ($keys) 不等于预期的顺序索引,则表示该数组是关联数组。在这种情况下,输出将为“关联数组”。如果数组的键与预期的顺序索引匹配,则表示该数组是顺序数组。在这种情况下,输出将为“顺序数组”。
结论
在 PHP 中,您可以通过检查数组的键来检查数组是关联数组还是顺序数组。如果键是非数字或不是从 0 开始的顺序数字,则该数组被视为关联数组。否则,如果键是从 0 开始的顺序整数,则该数组是顺序数组。要执行此检查,您可以使用 array_keys() 函数检索数组键并将其与预期模式进行比较。