如何在 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 // 顺序数组示例 $arr = array(10,20,30,40); // 第一个元素 echo $arr[0] . "
"; // 第二个元素 echo $arr[1] . "
"; // 第三个元素 echo $arr[2] . "
"; // 第四个元素 echo $arr[3] . "
"; ?>
输出
10 20 30 40
如何在 PHP 中检查数组是关联的还是顺序的
要在 PHP 中检查数组是关联的还是顺序的,可以使用 array_keys() 函数并将结果键数组与原始数组进行比较。
Array_keys() 函数
PHP 中的 array_keys() 函数用于从数组中检索所有键或键的子集。它返回一个包含输入数组键的新数组。
语法
array_keys() 函数的一般语法是:
array_keys(array $array, combined $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)) {
// 关联数组
echo 'Associative array';
} else {
// 顺序数组
echo 'Sequential array';
}
?>
输出
Sequential array
在此示例中,我们有一个数组 $,其中包含元素"apple"、"banana"和"orange"。我们使用 array_keys() 函数检索数组的键,然后使用 !== 运算符将这些键与从 0 到 count($array) - 1 的数字索引范围进行比较。如果数组的键 ($keys) 不等于预期的顺序索引,则表示该数组是关联的。在这种情况下,输出将为"关联数组"。如果数组的键与预期的顺序索引匹配,则表示该数组是顺序的。在这种情况下,输出将为"顺序数组"。
结论
在 PHP 中,您可以通过检查数组的键来检查数组是关联的还是顺序的。如果键不是数字,或者不是从 0 开始按连续数字顺序排列,则数组被视为关联数组。否则,如果键是从 0 开始的连续整数,则数组是连续的。要执行此检查,您可以使用 array_keys() 函数检索数组键并将它们与预期模式进行比较。

