如何在 PHP 中检查数组是关联数组还是顺序数组

phpserver side programmingprogramming更新于 2025/5/8 22:07:17

什么是关联数组?

关联数组是一种数组类型,其中每个元素都与特定键相关联,而不是像顺序数组那样被分配数字索引。换句话说,您不是通过数组元素的位置来访问它们,而是使用它们对应的键来访问它们。

在关联数组中,键可以是字符串或整数。每个键在数组中都是唯一的,这意味着没有两个元素可以具有相同的键。关联数组中的值可以是任何数据类型,例如字符串、数字、布尔值、对象甚至其他数组。

示例

<?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() 函数检索数组键并将它们与预期模式进行比较。


相关文章