php如何定义多维数组以某个字符去输出对应的值

$arr = [
    [
        'id' => 123,
        'test' => ['id' => 2, 'title' => "测试",'test3'=>['list'=>123]]
    ]
];

$field = "test.test3.list";


foreach($arr as $k=>$v){
    $result = getValueFromNestedArray($v, $field);
    echo "最终的值:" . $result;//输出123
}


function getValueFromNestedArray($array, $field) {
    $keys = explode('.', $field);
    $currentKey = array_shift($keys);

    if (isset($array[$currentKey])) {
        if (count($keys) == 0) {
            return $array[$currentKey];
        } else {
            return getValueFromNestedArray($array[$currentKey], implode('.', $keys));
        }
    } else {
        // 字段不存在的错误处理
        echo "字段 $currentKey 不存在!";
        return null;
    }
}


/**
    以上代码都是chatgpt输出的
    
    在上面的代码中,我们定义了一个名为getValueFromNestedArray()的递归函数,用于从多维数组中获取指定字段的值。该函数接受两个参数:原始数组和需要获取的字段。

    首先,我们将字段字符串$field使用.进行拆分,得到一个字段层级数组$keys。然后,我们通过array_shift()函数获取当前字段层级$currentKey。

    接着,我们检查当前层级的字段是否存在于数组中。如果存在,我们判断是否还有剩余的字段层级。如果没有剩余的字段层级,说明已经到达最终的值,我们返回当前层级对应的值。如果还有剩余的字段层级,说明需要继续递归地进入下一层级的数组中。

    如果当前层级的字段不存在于数组中,则执行相应的错误处理。

    这样,通过调用getValueFromNestedArray()函数,你可以灵活地获取多维数组中指定字段的值
**/
 

 

posted @ 2023-08-09 17:53  亚索会代码  阅读(22)  评论(0编辑  收藏  举报