我想将一个多维数组的键发送到一个函数并获取该键的值,它应该是一个项目或子数组。想象一下,我有这个功能:
public function returnArray($index){
$arr = [
'name' => 'ali',
'children' => [
'1' => 'reza',
'2' => 'hasan',
'3' => 'farhad',
'info' => [
'a',
'b',
'c'
]
]
];
return $arr[$index];
}
当我这样称呼时:
returnArray('[name][children][info]')
结果应该是该数组的info
。
我该怎么办?
提前致谢。
答案 0 :(得分:0)
如果要从具有3维的数组返回1维数组,可以发送3个参数,$ key1,$ key2和$ key3,返回值为array [$ key1] [$ KEY2] [$ KEY3]
答案 1 :(得分:0)
仅供参考,这段代码闻起来很糟糕 - 在字符串中重新实现一个数组,这让我觉得直接访问数组可能是个好主意:
$arr["name"]["children"]["info"]
但是,为了完整答案,让我们写一个函数来做你想做的事。
首先,不是在单个字符串中传入索引,而是函数已经有参数,所以让我们利用这个功能。在函数中,您可以使用[func_get_args](http://php.net/manual/en/function.func-get-args.php)
获取包含所有传入参数的数组。
// remove the parameter $index, as we don't know how many parameters there will be.
function returnArray(){
$arr = [
'name' => 'ali',
'children' => [
'1' => 'reza',
'2' => 'hasan',
'3' => 'farhad',
'info' => [
'a',
'b',
'c'
]
]
];
// store reference to the position in the array we care about:
$position = $arr;
foreach(func_get_args() as $arg) {
// update the reference to the position according to the passed in parameters.
$position = $position[$arg];
}
return $position;
}
然后我们可以像这样调用函数:
returnArray("children", "info");
/* Returns:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
*/
答案 2 :(得分:0)
你可以这样做:
public function returnArray(){
$indexes = func_get_args();
$arr = [
'name' => 'ali',
'children' => [
'1' => 'reza',
'2' => 'hasan',
'3' => 'farhad',
'info' => [
'a',
'b',
'c'
]
]
];
$tmp = &$arr;
while($index = array_shift($indexes)){
$tmp = &$tmp[$index];
}
return $tmp;
}
然后:
returnArray('name','children','info');
但是如果你想要the result should be info
那么做:
returnArray('children','info');
只是一种方法;)