区分关联数组和顺序 PHP 数组
PHP 本质上将所有数组识别为关联数组,这使得区分行为类似列表的数组具有挑战性。为了解决这个问题,我们探索了一种可靠的方法来确定数组是否符合列表的条件。
列表与关联数组
$sequentialArray = [ 'apple', 'orange', 'tomato', 'carrot' ];
$assocArray = [ 'fruit1' => 'apple', 'fruit2' => 'orange', 'veg1' => 'tomato', 'veg2' => 'carrot' ];
在 PHP 8.1 和 中识别列表超越
PHP 8.1 引入了 array_is_list() 来方便地检查数组是否是列表:
array_is_list($sequentialArray); // true
早期 PHP 版本的遗留解决方案
为了迎合 8.1 之前的 PHP 版本,我们可以定义一个自定义的function:
function array_is_list(array $arr) { if ($arr === []) { return true; } return array_keys($arr) === range(0, count($arr) - 1); }
测试函数
var_dump(array_is_list([])); // true var_dump(array_is_list(['a', 'b', 'c'])); // true var_dump(array_is_list(["0" => 'a', "1" => 'b', "2" => 'c'])); // true var_dump(array_is_list(["1" => 'a', "0" => 'b', "2" => 'c'])); // false var_dump(array_is_list(["a" => 'a', "b" => 'b', "c" => 'c'])); // false
通过利用这些方法,开发者可以有效区分关联数组和顺序数组,从而实现更精确、更高效的数组在他们的 PHP 应用程序中处理。
以上是如何可靠地确定 PHP 数组是否是顺序列表?的详细内容。更多信息请关注PHP中文网其他相关文章!