Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查数组的子级是对象还是数组_Php_Arrays - Fatal编程技术网

Php 检查数组的子级是对象还是数组

Php 检查数组的子级是对象还是数组,php,arrays,Php,Arrays,我有一个类,它允许根据语法“key.key2.key3”检索数组 现在,没问题。当其中一个关键点是对象时会出现问题。 因为我必须检查键是数组还是对象 当我试图确定键的类型[key2]==数组或键的类型->key2==对象时,我的脚本出现错误。这两个条件之一可能是错误的。(例如,如果脚本测试该键[key2]==数组,并且该键2是一个对象) 有没有一种方法可以在不执行key[key2]或key->key2的情况下验证key2是数组还是对象 谢谢。那么is_array()呢 Docs在访问密钥之前,您

我有一个类,它允许根据语法“key.key2.key3”检索数组

现在,没问题。当其中一个关键点是对象时会出现问题。 因为我必须检查键是数组还是对象

当我试图确定键的类型[key2]==数组或键的类型->key2==对象时,我的脚本出现错误。这两个条件之一可能是错误的。(例如,如果脚本测试该键[key2]==数组,并且该键2是一个对象)

有没有一种方法可以在不执行key[key2]或key->key2的情况下验证key2是数组还是对象

谢谢。

那么
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的例子中,我没有以这种方式使用这两个函数。