[英]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' ));
您可以将输入字符串与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.