Php 如何检查变量是对象还是数组

Php 如何检查变量是对象还是数组,php,arrays,object,Php,Arrays,Object,我试图检查传递的变量是php中的对象还是数组 我有点像 if(is_object($product>item)) { if(isset($product->item->ArrayOfImage->path)) { $img = $product->item->ArrayOfImage->path }else{ unset($img); } }else{ if(isset($pr

我试图检查传递的变量是php中的对象还是数组

我有点像

if(is_object($product>item)) {
     if(isset($product->item->ArrayOfImage->path)) {
          $img = $product->item->ArrayOfImage->path
     }else{
          unset($img);
     }
}else{
    if(isset($product->item[$i]->ArrayOfImage->path)){  //$i is the index from a for loop
        $img = $product->item[$i]->ArrayOfImage->path
    }else{
        unset($img);
    }
}

上面的代码将检查
$product->item
是否为对象,如果不是,则将其视为数组。它还将检查是否设置了该值。我确实觉得我可以重构它,但不确定从哪里开始。有人能帮我一下吗?

您可以使用php内置函数来检测变量的类型:

string gettype ( mixed $var );
也可以使用或函数检查变量类型:

bool is_array ( mixed $var )
bool is_object ( mixed $var )

为什么你觉得你应该重构这个?发生了什么?它不起作用吗?我们需要了解这些内容,因为如果包含函数,您可以将
else
更改为
else。如果两者都不合适,就什么也不做。否则,如果它起作用,我不知道你在找什么。你可以用三元符号表示
if/else
,如果所有这些词都让你失望了……是我还是其他人注意到两行不是以分号结尾的。