首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP,如何逐级获取关联数组中的值

PHP,如何逐级获取关联数组中的值
EN

Stack Overflow用户
提问于 2020-09-01 03:28:25
回答 1查看 42关注 0票数 1

我的问题是,我如何从某个数组的确定级别获得所有值,我有这个数组:

代码语言:javascript
运行
复制
array (size=4)
  'Azul' => 
    array (size=2)
      '128GB' => 
        array (size=2)
          'Cristal' => string 'Cristal' (length=7)
          'Plastico' => string 'Plastico' (length=8)
      '64GB' => 
        array (size=1)
          'Cristal' => string 'Cristal' (length=7)
  'Blanco' => 
    array (size=2)
      '32GB' => 
        array (size=1)
          'Plastico' => string 'Plastico' (length=8)
      '64GB' => 
        array (size=1)
          'Madera' => string 'Madera' (length=6)
  'Dorado' => 
    array (size=1)
      '64GB' => 
        array (size=1)
          'Plastico' => string 'Plastico' (length=8)
  'Verde' => 
    array (size=1)
      '64GB' => 
        array (size=1)
          'Madera' => string 'Madera' (length=6)

我想用这个递归函数得到第一个级别,但是我找不到比两个级别更深的级别,例如,我需要第一个级别,我得到:

Azul,Blanco,Dorado,Verde

但是我需要我得到的Azul的第二个级别:128 of,64 of

问题是,如果我需要Azul的第三级和64 get,我可以做什么来获得这个,拥有密钥Azul和64 get或第三级。

我的递归函数是这样的:

代码语言:javascript
运行
复制
function recursive($array, $level, $itemLVL)
    {
        foreach ($array as $key => $value) {
            //If $value is an array.
            if (is_array($value)) {
                //We need to loop through it.
                if ($level == $itemLVL) {
                    //echo "<br> Key: $key - Nivel:$level $itemLVL";
                    echo "<option value='$key'>$key</option>";
                }
                
                recursive($value, $level + 1, $itemLVL);
            } elseif ($level == $itemLVL) {
                echo "<option value='$key'>$key</option>";
            }
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-01 03:39:03

如果您知道键的名称和顺序,则如下所示将返回这些键下的内容:

代码语言:javascript
运行
复制
function get_array_path($path, $array) {
    $temp =& $array;

    foreach($path as $key) {
        $temp =& $temp[$key];
    }
    return $temp;
}

按顺序传递一个键数组:

代码语言:javascript
运行
复制
$result = get_array_path(['Azul', '64GB'], $array);

如果您只需要路径下的密钥,而不是其他所有内容,则将false作为第三个参数传递:

代码语言:javascript
运行
复制
function get_array_path($path, $array, $values=true) {
    $temp =& $array;

    foreach($path as $key) {
        $temp =& $temp[$key];
    }
    if($values === false) {
        $temp = array_keys($temp);
    }
    return $temp;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63677010

复制
相关文章

相似问题

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