繁体   English   中英

使用PHP中的特定键格式获取数组值

[英]Get array value with specific key format in PHP

考虑以下数组和函数:

$array = [
  'key' => [
    'key_2' => [
       'key_3' => 'Value 3'
    ]
  ],
];

function get_value( $key ) {
  echo $array . $key;
}

现在我想这样调用函数:

get_value( 'key[key_2][key_3]' );

它给出了自然的错误。

可以以理解'key[key_2][key_3]'并给出值的方式编写get_value函数吗?

由于输入字符串似乎非常宽松地使用,因此我将假定可以将其操纵为更易于使用的东西。

在这里,我将键分解并循环,直到没有键时才在数组中进行挖掘。
注意返回值可以是数组,也可以是string / int / float / bool

function get_value($array, $key ) {
    $keys = explode(",", $key);
    Foreach($keys as $k){
        $array = $array[$k];
    }
    Return $array;
}

Var_dump(get_value($array, 'key,key_2,key_3' ));

https://3v4l.org/mnvOs

您可以将输入字符串与str_replace一起使用。
但是我不明白其中的逻辑。 它们都是键,但是只有第二个和第三个具有[]

请参阅此处以获取str_replace示例: https : //3v4l.org/BObTk

您不能如代码中所述将参数传递给函数。 如果要打印所有值或打印特定键的值,则必须将键作为字符串传递给函数。

考虑下面的示例:

function get_value( $key = null ) {
    $array = [
       'key' => [
          'key_2' => array(
             'key_3' => 'Value 3'
          )
       ],
    ];

    $keys = explode('|', $key);
    $result = '';
    foreach ($keys as $key) {
        if (empty($result)) {
            $result = $array[$key];       
        } else {
            $result = $result[$key];     
        }
    }

    echo $result;
}

现在,如果您传递get_value('key | key_2 | key_3'),则可以使用。

另外,php中的作用域与javascript中的作用域不同。 您不能访问函数内部的外部函数变量。 请参阅本文以获取有关范围的更多信息可变范围

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM