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

更新于: 2023-07-28

2K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告