如何检查 PHP 数组是关联数组还是顺序(索引)数组?
大家好!我刚开始学习 PHP,遇到了一个令人困惑的情况。我知道 PHP 中有两种类型的数组:普通(顺序)数组,键从 0 开始是数字;关联数组,键是字符串。但实际上情况是混合的:数组可能以键 0 开头,然后是字符串,然后又回到数字。或者键可能是数字,但不按顺序(例如 0, 5, 10)。
我需要编写一个函数来处理表单中的数据。如果数组是顺序的(即键按顺序排列:0, 1, 2, 3...),我应用一种逻辑。如果是关联的(例如键 'name', 'email', 'age'),则应用另一种逻辑。但通过 `array_keys()` 的标准检查并不能给出明确的答案,因为像 `[0 => 'a', 2 => 'b']` 这样的数组形式上虽然是数字索引,但不是顺序的。
下面是一个让我困惑的例子:
```php
$arr1 = ['a', 'b', 'c']; // 顺序
$arr2 = ['name' => 'John', 'age' => 30]; // 关联
$arr3 = [0 => 'x', 1 => 'y', 3 => 'z']; // 数字索引,但有跳