ZetCode

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";

该函数经过优化,可以快速失败。非列表检查会更快,因为它会在第一个不符合要求的键处停止。列表检查必须验证所有键。

最佳实践

来源

PHP array_is_list 文档

本教程介绍了 PHP 的 array_is_list 函数,并通过实际示例展示了其在数组验证场景中的用法。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。至今,我已撰写了超过 1400 篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 数组函数