PHP Conference Japan 2024

is_iterable

(PHP 7 >= 7.1.0, PHP 8)

is_iterable 驗證變數的內容是否為可迭代值

說明

is_iterable(混合 $value): 布林值

驗證變數的內容是否被 iterable 偽型別接受,也就是說,它是一個 陣列 或是一個實作了 Traversable 介面的物件。

參數

value

要檢查的值

回傳值

如果 value 是可迭代的,則回傳 true,否則回傳 false

範例

範例 #1 is_iterable() 範例

<?php

var_dump
(is_iterable([1, 2, 3])); // bool(true)
var_dump(is_iterable(new ArrayIterator([1, 2, 3]))); // bool(true)
var_dump(is_iterable((function () { yield 1; })())); // bool(true)
var_dump(is_iterable(1)); // bool(false)
var_dump(is_iterable(new stdClass())); // bool(false)

?>

參見

新增註解

使用者貢獻的註解 2 則註解

mopsyd at me dot com
6 年前
對 brcontainer 的 polyfill 做了一些小修正,以非阻塞的方式防止非物件錯誤,並更正了條件檢查 "file_exists" 而不是正確的 "function_exists" 的問題

if ( !function_exists( 'is_iterable' ) )
{

function is_iterable( $obj )
{
return is_array( $obj ) || ( is_object( $obj ) && ( $obj instanceof \Traversable ) );
}

}

原來的答案無法正確解析,因為它查找的是檔案而不是函式,而且如果提供不可迭代的非物件值(例如 false),則提供的方法會出錯。
To Top