2

在对象的构造函数中,我希望能够传递一个 int 变量(代表一个 id 然后获取到数据库)或一个数组(当我已经获取到数据库时)

我试过这样的事情:

__construct($var){
     if(isset($var['id'])){ /*tried also if($var['id']) != '')*/
        $this->id = $var['id'];
     }else{
        $this->id = $var;
      }
}

问题是通过将 int 值参数作为 $var 传递,它将进入 if 的第一种情况。

那么我怎样才能检查 $var 是一个(关联)数组?

4

4 回答 4

4

您可以使用is_int ($var)它来检查它是否是一个 int 以及is_array ($var)它是否是一个数组

于 2012-10-20T11:57:51.653 回答
1

你可以使用phpis_array()is_int()函数

if(is_array($var)){
        $this->id = $var['id'];
     }else{
        $this->id = $var;
      }

或者

if(is_int($var)){
           $this->id = $var;
         }elseif(is_array($var)){           
           $this->id = $var['id'];
          }
于 2012-10-20T11:57:18.483 回答
1

至少有两种不同的检查方法:
gettype(),它将返回一个类型为

$type = gettype($var);
switch($type) {
    case 'array':
        // ....
        break;
    case 'integer':
        // ...
        break;
    // ....
}

并且

is_int(), 分别返回值is_array(),这并不奇怪。boolean

于 2012-10-20T11:59:00.433 回答
0

试试这个:

if (is_array($var)) ...
于 2012-10-20T12:03:30.680 回答