php - 基于一个或多个提供的键递归访问潜在的嵌套值

标签 php arrays recursion php-7.1 custom-function

我正在尝试访问一个嵌套数组(一个包含数组的数组又包含数组......)

给定数组和键的路径,我需要获取最后一个值。

给定 foo 和 a...z 我需要得到

foo[a][b][c]…[x][y][z]

请问有没有比这更优雅的方式?

function getValueRecursive(array $array, string ...$identifyer){
    $value = $array;
    
    foreach($identifyer as $key){
        if(!key_exists($key, $value))
            return NULL;
        
        $value = $value[$key];
    }
    
    return $value;
}

$foo = [
    'a' => [
        'b' => [
            'c' => "Hallo Welt!"
        ]
    ]
];

echo getValueRecursive($foo, 'a', 'b', 'c');                                    // Returns "Hallo Welt!"

最佳答案

PHP code demo

<?php

$foo = [
    'a' => [
        'b' => [
            'c' => "Hallo Welt!"
        ]
    ]
];
$result=array();
array_walk_recursive($foo, function($value,$key) use (&$result){
    $result[]=$value;
});
print_r($result[0]);

或者

<?php
ini_set("display_errors", 1);
$foo = [
    'a' => [
        'b' => [
            'c' => "Hallo Welt!"
        ]
    ]
];
echo getValueOfArray($foo,"a","b","c");
function getValueOfArray($array)
{
    $args=func_get_args();
    unset($args[0]);
    $string="";
    foreach($args as $value)
    {
        $string.="['$value']";
    }
    eval('if(isset($array'.$string.'))
    {
        $result= $array'.$string.';
    }');
    return $result;
}

输出: Hello World !

关于php - 基于一个或多个提供的键递归访问潜在的嵌套值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43344822/

相关文章:

php - 从 PHP 中准备好的 MySQL 语句的结果中计算唯一值

go - 我试图以广度优先的方式遍历文件结构。我遇到段错误

java - 在 Java 中使用递归求平方根

javascript - $_POST 在 ajax 表单提交中不起作用?

php - 如何使用phpexcel在单元格中创建新行

javascript - 将来自 2 个 AJAX 调用的数据合并到一个数组中?

java - Arrays.setAll 不适用于 boolean 值

matlab - 递归匿名函数Matlab

javascript - Jquery ajax 表单数组提交

JavaScript - 需要多维数组吗?