考虑以下数组和函数:
$array = [
'key' => [
'key_2' => [
'key_3' => 'Value 3'
]
],
];
function get_value( $key ) {
echo $array . $key;
}
现在我想调用这样的函数:
get_value( 'key[key_2][key_3]' );
它给出了自然的错误。
可以以理解get_value
并给出值的方式编写'key[key_2][key_3]'
函数吗?
答案 0 :(得分:2)
由于输入字符串似乎使用得非常松散,我会假设这可以被操作到更容易使用的东西。
在这里,我将键分解并循环它们并挖掘数组,直到我没有按键 请注意,返回可以是array或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
答案 1 :(得分:1)
您无法将参数传递给代码中提到的函数。如果要打印所有值或打印特定键的值,您必须将该键作为字符串传递给该函数。
考虑以下示例:
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中的范围不同。你无法访问函数内部的外部函数变量。有关范围Variable Scopes
的详细信息,请参阅此文章希望这有帮助。