php - 如何检查变量是否为数组?...或类似数组的东西

标签 php arrays foreach

我想使用带有变量的 foreach 循环,但是这个变量可以是许多不同的类型,例如 NULL

所以在 foreach 之前我测试一下:

if(is_array($var)){
  foreach($var as ...

但我意识到它也可以是一个实现Iterator接口(interface)的类。也许我是盲人但是如何检查该类是否实现了接口(interface)?是否有类似 is_a 函数或 inherits 运算符之类的东西?我找到了class_implements,我可以使用它,但也许有更简单的东西?

其次,更重要的是,我想这个函数存在,足以检查变量 is_array 或“实现 Iterator 接口(interface)”还是我应该测试一些东西更多?

最佳答案

如果您在函数中使用 foreach 并且您需要一个数组或 Traversable对象,您可以键入提示该功能的对象:

function myFunction(array $a)
function myFunction(Traversable)

如果您没有在函数中使用 foreach 或者您希望同时使用 you can simply use this construct检查是否可以迭代变量:

if (is_array($a) or ($a instanceof Traversable))

关于php - 如何检查变量是否为数组?...或类似数组的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15603952/

相关文章:

c - 尝试在嵌套 for 循环内交换二维数组中的值

javascript - AngularJS $scope in 循环/forEach

java - 在 lambda foreach 表达式 java 8 中获取索引

php - 为什么我使用 .htaccess 文件时会收到 500 错误

php - 我设法绕过了服务器端集成的 recaptcha - 我做错了什么?

arrays - 求数组总和的中位数

c# - 每个 “foreach” 循环的每次迭代都会生成 24 字节的垃圾内存?

php - Symfony2 Routing.yml 到外部 url

php - 需要查询有时间冲突的用户,并返回那些时间冲突的用户

Java:18 个字符后的新行和 13 行后的新数组索引