PHP 7.1 添加了新的is_iterable函数来检查变量是否可以迭代。但是,尽管您可以迭代对象属性is_iterable,但它们的属性返回 false。
这似乎是故意的,因为它被记录在案,我找不到任何关于该问题的 PHP 错误,但我想知道为什么要这样做?
<?php
$a = new stdClass();
$a->foo = 'bar';
var_dump(is_iterable($a));
foreach ($a as $key => $value) {
var_dump($key, $value);
}
Run Code Online (Sandbox Code Playgroud)
输出
boolean false
string 'foo' (length=3)
string 'bar' (length=3)
Run Code Online (Sandbox Code Playgroud)
但我希望它输出
boolean true
string 'foo' (length=3)
string 'bar' (length=3)
Run Code Online (Sandbox Code Playgroud)