📅  最后修改于: 2023-12-03 14:41:18.813000             🧑  作者: Mango
foreach()
参数必须是数组|对象类型,给定 null
在PHP中,foreach()
用于遍历数组和对象。但是必须注意的是,foreach()
的参数必须是数组或者对象类型,不能为null
。否则,将会抛出一个Warning
。
$nullVariable = null;
foreach ($nullVariable as $value) {
echo $value;
}
// Warning: Invalid argument supplied for foreach() in filepath on line number
上面的代码会抛出一个无效参数的警告,因为$nullVariable
是null
,而不是一个数组或者对象。
因此,在使用foreach()
之前,请确保您的参数是正确的类型,否则将无法正确遍历它们的内容。
另外,当您使用foreach()
遍历一个对象时,它将遍历对象的公共属性,除非您定义了一个魔术方法__iterable
来指定它应该如何遍历。
class Example {
public $a = 1;
protected $b = 2;
private $c = 3;
public function __iterable()
{
return ['a', 'b', 'c']; // 指定以哪个顺序迭代属性
}
}
$example = new Example();
foreach ($example as $key => $value) {
echo $key . ' => ' . $value . PHP_EOL;
}
// Output: a => 1
在上面的示例中,我们定义了一个Example
类,并为其定义了三个属性:一个公共属性$a
,一个受保护的属性$b
和一个私有属性$c
。然而,我们只有在将$example
对象作为迭代对象传递给foreach()
后,才能输出$a
的值,因为它是公共的。为了遍历$b
和$c
,我们定义了一个__iterable()
方法告诉foreach()
以何种顺序迭代对象的属性。
综上所述,foreach()
是一个非常有用的功能,但要注意它的参数必须是数组或对象类型。