更新
在初步反馈之后,我得到了我的问题不清楚,我决定重新开始并提出更多背景和更清晰的细节。见Many php mysqli queries from one prepared statement without knowing how many parameters
对此感到抱歉。
原始问题
我想动态转换一个关联数组:
$array =
[
'key' => 'AX-2NV',
'id' => 2
]
变成一组变量:
[$key,$id] // where $key='AX-2NV' and $id=2
当我无法控制输入数组时。使用extract
function
extract($array); // will create the variables $key and $id
面临的挑战是,如果我事先不知道变量名称或输入数组大小是什么,我如何在数组中得到结果变量?
这可能是无关紧要的,但目标是调用函数call_user_func_array
并将数组[$key,$id]
作为我调用的函数的参数传递给它。我认为只是做
call_user_func_array($function,array_values($array));
但我仍然需要处理这些变量以进行进一步处理,因此只使用这些值并继续前进不是一种选择。
答案 0 :(得分:1)
您可以使用array_keys()
创建一个包含其他数组中所有键的列表的数组。
extract()
可能有安全隐患,我希望这是某种假设问题,因为否则你应该从数组本身获取所需的数据,而不是将其项转换为全局变量。
答案 1 :(得分:1)
非常奇怪的想法,但是......
foreach ($array as $_k => $_v) {
$$_k = $_v;
}
所以...你的
$array =
[
'key' => 'AX-2NV',
'id' => 2
]
将是
$key = 'AX-2NV';
$id = 2;
修改强>
我明白了......))
$newArray = array_values($array)
这就是你想要的。