我试图弄清楚如何使用PHP实现类似于我在JavaScript中所做的事情的等价物。但我不确定要使用哪些运算符。在JavaScript中,我想查看传递的特定参数是对象还是数组..如果不是,则它是一个字符串/整数,我所做的是类似于:
if (str instanceof Array || str instanceof Object)
{
//code
}
else
{
//code
}
有人知道 PHP 中相当于此的等效方法吗?
尝试使用:
if (!is_scalar($var)) {
// Varible is object or array
}
我在查找 is_countable
时遇到了这个问题。也许对某些人有用。
https://www.php.net/manual/zh/function.is-countable.php
从 PHP 8.1 及以上版本开始,您可以使用以下内容:
array_is_list($array)
https://www.php.net/manual/zh/function.array-is-list.php
纯 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));
}
implode()
函数的粘合剂参数。看起来你发错了页面。https://dev59.com/5HVC5IYBdhLWcg3w1Etq已经涵盖了你想要讨论的主题。 - mickmackusafunction test(array|object $something): void
{
// Here, $something is either an array or an object
}
else
分支来处理非数组/非对象的数据。 - undefinedstdClass Object
(
[rest_food_items_id] => 137
[rest_user_id] => 42
)
Array
(
[rest_food_items_id] => 137
[rest_user_id] => 42
)
**
**
if(is_object($data)){
}
if(is_array($data)){
}
json_decode
对其进行解码,如果失败了,则不是 JSON。 - Ry-is_array($var)
成为瓶颈,那么(array) $var === $var
的性能更高。 - rgvcorley