将值数组转换为变量数组

时间:2016-07-09 00:29:08

标签: php arrays

更新

在初步反馈之后,我得到了我的问题不清楚,我决定重新开始并提出更多背景和更清晰的细节。见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));

但我仍然需要处理这些变量以进行进一步处理,因此只使用这些值并继续前进不是一种选择。

2 个答案:

答案 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)

这就是你想要的。