Php 检查数组的子级是对象还是数组
我有一个类,它允许根据语法“key.key2.key3”检索数组 现在,没问题。当其中一个关键点是对象时会出现问题。 因为我必须检查键是数组还是对象 当我试图确定键的类型[key2]==数组或键的类型->key2==对象时,我的脚本出现错误。这两个条件之一可能是错误的。(例如,如果脚本测试该键[key2]==数组,并且该键2是一个对象) 有没有一种方法可以在不执行key[key2]或key->key2的情况下验证key2是数组还是对象 谢谢。那么Php 检查数组的子级是对象还是数组,php,arrays,Php,Arrays,我有一个类,它允许根据语法“key.key2.key3”检索数组 现在,没问题。当其中一个关键点是对象时会出现问题。 因为我必须检查键是数组还是对象 当我试图确定键的类型[key2]==数组或键的类型->key2==对象时,我的脚本出现错误。这两个条件之一可能是错误的。(例如,如果脚本测试该键[key2]==数组,并且该键2是一个对象) 有没有一种方法可以在不执行key[key2]或key->key2的情况下验证key2是数组还是对象 谢谢。那么is_array()呢 Docs在访问密钥之前,您
is_array()
呢
Docs在访问密钥之前,您需要对父级执行测试 以下是一个例子:
function findValue($a, $s) {
$keys = explode(".", $s);
foreach ($keys as $key) {
if (is_object($a)) {
$a = $a->$key;
} else if (is_array($a)) {
$a = $a[$key];
} else { // unexpected
return null;
}
}
return $a;
}
// Sample data: mix of object and array:
$arr = [
"key1" => (object) [
"key2" => [
"key3" => 42
]
]
];
echo findValue($arr, "key1.key2.key3"); // 42
共享我已经使用过的代码是_array()和_object(),但与trincot的示例不同。在trincot的例子中,我没有以这种方式使用这两个函数。