在foreach之前总是需要使用"is_array()"吗?

Alv*_*aro 15 php arrays foreach

我想知道是否总是需要像我is_array()之前那样使用之前的东西foreach.

如果变量不是数组,则会引发错误.所以我总是使用:

if(is_array($users))   {
    foreach($users as $user){

    }
}
Run Code Online (Sandbox Code Playgroud)

你会推荐我什么?谢谢.

Nea*_*eal 22

好吧,如果你已经足够了解你的代码,那么就没有理由去检查它是否是一个数组.

否则,如果变量更改类型,我会建议稍微调整一下代码,这样就不会这样做了.

除此之外,使用if语句是要走的路.

  • 记住代码的所有细节并不是一种无需安全编程的安全方法.你不能确定,你总是可以得到星期一或星期五的情况,或者介于两者之间的任何不那么尖锐的时刻,搞砸了一些变量. (2认同)

Ja͢*_*͢ck 5

如果你确定某些东西是一个数组或以其他方式实现Iterable,你显然不需要额外的if条件.如果您不确定,那么显然检查类型将使您的代码更可靠.

我见过的一些黑客包括将变量转换为数组:( array)$ users.不建议这样做,最好明确检查类型.

另外,如果这是函数内部的代码,您可以使用参数类型:

function mycode(array $users)
{
    foreach ($users as $user) { }
}
Run Code Online (Sandbox Code Playgroud)

当使用错误的类型调用函数时,它将触发错误.