试图弄清楚如何做我在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));
}