我有一个允许根据语法“key.key2.key3”检索数组的类。检查数组的子对象是数组还是数组
现在,没问题。当其中一个键是对象时会发生问题。 因为我必须检查密钥是一个数组还是一个对象
当我尝试确定键[key2] ==数组类型或key-> key2 ==对象的类型时,我的脚本错误。这两个条件之一可能是错误的。 (例如,脚本测试key [key2] ==数组,key2是一个对象)。
有没有一种方法来验证key2是一个数组或对象而不用做key [key2]或key-> key2?
谢谢。
我有一个允许根据语法“key.key2.key3”检索数组的类。检查数组的子对象是数组还是数组
现在,没问题。当其中一个键是对象时会发生问题。 因为我必须检查密钥是一个数组还是一个对象
当我尝试确定键[key2] ==数组类型或key-> key2 ==对象的类型时,我的脚本错误。这两个条件之一可能是错误的。 (例如,脚本测试key [key2] ==数组,key2是一个对象)。
有没有一种方法来验证key2是一个数组或对象而不用做key [key2]或key-> key2?
谢谢。
您需要在父进行测试,之前访问的关键。
下面是一个例子:
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
is_array()
怎么样?
文档here
份额代码 –
['is_array()'](http://php.net/manual/en/function.is-array.php)['is_object ()'](http://php.net/manual/en/function.is-object.php) –
我已经使用is_array()和is_object(),但不像trincot的例子。 trincot的例子工作,我没有这样使用这两个函数。 –