首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用平面数组获取多维数组的值

使用平面数组获取多维数组的值
EN

Stack Overflow用户
提问于 2018-07-13 06:07:11
回答 4查看 54关注 0票数 3

我有以下数组:

代码语言:javascript
复制
$people['men'] = [
    'first_name' => 'John',
    'last_name' => 'Doe'
];

我有以下平面数组:

代码语言:javascript
复制
$name = ['men', 'first_name'];

现在我想创建一个函数,它“读取”平面数组,并根据平面数组元素的顺序从多维数组中获取值。

代码语言:javascript
复制
function read($multidimensionalArray,$flatArray){
    // do stuff here
}

echo read($people,$name); // must print 'John'

这有可能实现吗?哪种方式才是正确的呢?我真的为此伤透了脑筋。我完全不知道如何开始。

提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-13 06:11:20

这应该是关键:

代码语言:javascript
复制
<?php

$people['men'] = [
    'first_name' => 'John',
    'last_name' => 'Doe'
];
$name = ['men', 'first_name'];

echo read($people,$name);

function read($multidimensionalArray,$flatArray){
    $cur = $multidimensionalArray;
    foreach($flatArray as $key)
    {
        $cur = $cur[$key];
    }
    return $cur;
}

链接:https://3v4l.org/96EnQ

一定要在里面放一些错误检查(isset之类的)

票数 3
EN

Stack Overflow用户

发布于 2018-07-13 06:24:52

您可以使用递归函数来执行此操作。

代码语言:javascript
复制
function read(&$array, $path) {

    // return null if one of the keys in the path is not present
    if (!isset($array[$key = array_shift($path)])) return null;

    // call recursively until you reach the end of the path, then return the value
    return $path ? read($array[$key], $path) : $array[$key];
}

echo read($people, $name);
票数 1
EN

Stack Overflow用户

发布于 2018-07-13 06:31:58

您还可以使用array_reduce

代码语言:javascript
复制
$val = array_reduce($name, function($carry, $item) {
    return $carry[$item];
}, $people);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51315138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档