【发布时间】:2017-07-28 19:32:51
【问题描述】:
在启动 foreach 循环时强制转换为数组是否被认为是一种不好的做法。像这样的:
foreach ((array) $examples as $example) {
// Do stuff
}
这样可以防止
为 foreach() 提供的参数无效
从发生。
或者最好先检查它是否是一个数组:
if ( is_array($examples) ) {
// Do the loop
}
【问题讨论】:
-
一个 Iterable 对象,例如 Collection 或 Generator,可以使用
foreach()循环,但将返回false以获取is_array().... 更好地通过其他方式检查 -
有什么我们应该知道的上下文吗?如果不是数组,您是否期望任意类型,包括
Traversable接口的实现?或者你只是想例如检测您的数据集何时为空?这是否是不好的做法在很大程度上取决于这一点。一般来说,对内部变量可以容纳什么一无所知可能是设计问题的征兆,可能应该在其他地方解决。
标签: php arrays foreach casting