PHP 是变量数组或对象


php is variable an array or object

试图弄清楚如何做我在javascript中但在php中所做的等效的事情。但我不确定运营商是否这样做。在javascript中,我想看看传递的特定参数是对象还是数组。如果不是,那么它是一个字符串/整数,我所做的是这样的

if (str instanceof Array || str instanceof Object) 
{
   //code
}
else
{
   //code
}

有人知道PHP的等效物吗?

使用 is_array 检查变量是否为

数组,类似地,使用 is_object 检查变量是否为对象。

尝试使用:

if (!is_scalar($var)) {
    // Varible is object or array
}

对象(使用 is_object)-----

stdClass Object
(
    [rest_food_items_id] => 137
    [rest_user_id] => 42
)

数组(使用 is_array)----

Array
(
    [rest_food_items_id] => 137
    [rest_user_id] => 42
)

**

**

if(is_object($data)){
}
if(is_array($data)){
}

我在寻找is_countable时遇到了这个问题。也许它对某人有用。https://www.php.net/manual/en/function.is-countable.php

从 PHP 8.0 开始,您可以在编写函数时使用联合类型,在运行时验证参数的类型:

function test(array|object $something): void
{
    // Here, $something is either an array or an object
}

PHP>= 8.1

从 PHP 8.1 及更高版本开始,您可以使用:

array_is_list($array)

https://www.php.net/manual/en/function.array-is-list.php

<小时 />

PHP <8.1

纯is_array/is_object无法判断,因为:

is_array([0,1,2,3]) // true
is_object([0,1,2,3]) // false
is_array(['a'=>1,'b'=>2]) // true
is_object(['a'=>1,'b'=>2]) // false

在这里,我编写了一个简单的函数来做到这一点

function isRealObject($arrOrObject) {
    if (is_object($arrOrObject))
        return true;
    $keys = array_keys($arrOrObject);
    return implode('', $keys) != implode(range(0, count($keys)-1));
}