PHP array_is_list 函数
最后修改于 2025 年 3 月 13 日
PHP 的 array_is_list 函数用于检查一个数组是否为一个列表。列表是指一个以 0 开头的连续整数键的数组。该函数在 PHP 8.1 中引入。
基本定义
array_is_list 函数用于判断一个数组是否拥有从 0 开始的连续整数键。如果数组符合此条件,则返回 true,否则返回 false。
语法:array_is_list(array $array): bool。空数组始终返回 true。此函数对于 JSON 数组验证特别有用。
基本的 array_is_list 示例
此示例演示了一个数组符合列表条件的简单情况。
basic_array_is_list.php
<?php $list = ['apple', 'banana', 'cherry']; $result = array_is_list($list); var_dump($result);
该数组具有从 0 开始的连续整数键(0, 1, 2),因此 array_is_list 返回 true。这是 PHP 中最常见的列表结构。
非连续键示例
展示了该函数在处理非连续键或非整数键时的行为。
non_sequential.php
<?php $array1 = [1 => 'a', 2 => 'b', 3 => 'c']; $array2 = ['a', 'b', 'c', 'd' => 'e']; var_dump(array_is_list($array1)); // bool(false) var_dump(array_is_list($array2)); // bool(false)
$array1 失败是因为键不是从 0 开始。$array2 失败是因为有一个非连续的 'd' 键。两者均不被视为列表。
空数组和混合数组
演示了函数在处理空数组和包含混合键类型的数组时的行为。
empty_mixed.php
<?php $empty = []; $mixed = [0 => 'a', 1 => 'b', 'name' => 'John']; var_dump(array_is_list($empty)); // bool(true) var_dump(array_is_list($mixed)); // bool(false)
空数组始终返回 true。混合数组失败,因为它同时包含整数键和字符串键,这使其不符合列表的要求。
JSON 数组验证
实际示例,验证解码后的 JSON 是否代表一个正确的数组/列表。
json_validation.php
<?php
$jsonArray = '[1, 2, 3]';
$jsonObject = '{"0":1, "1":2, "2":3}';
$decodedArray = json_decode($jsonArray, true);
$decodedObject = json_decode($jsonObject, true);
var_dump(array_is_list($decodedArray)); // bool(true)
var_dump(array_is_list($decodedObject)); // bool(false)
两个 JSON 字符串包含相同的数据但结构不同。只有第一个解码为一个正确的列表。第二个尽管有值,但包含字符串键。
性能注意事项
展示了 array_is_list 在处理大型数组时的行为。
performance.php
<?php // Generate a large list $largeList = range(0, 100000); // Add one non-list element at the end $notList = $largeList; $notList['x'] = 'break'; $start = microtime(true); array_is_list($largeList); $timeList = microtime(true) - $start; $start = microtime(true); array_is_list($notList); $timeNotList = microtime(true) - $start; echo "List check: $timeList seconds\n"; echo "Non-list check: $timeNotList seconds\n";
该函数经过优化,可以快速失败。非列表检查会更快,因为它会在第一个不符合要求的键处停止。列表检查必须验证所有键。
最佳实践
- JSON 验证:用于确保解码的 JSON 是一个数组。
- API 开发:验证输入数组是否符合预期的格式。
- 数据处理:在需要列表的操作之前进行检查。
- 类型安全:与其他类型检查结合使用以提高健壮性。
来源
本教程介绍了 PHP 的 array_is_list 函数,并通过实际示例展示了其在数组验证场景中的用法。
作者
列出 所有 PHP 数组函数。