一尘不染

使用字符串路径设置嵌套数组数据

php

我正在尝试编写一个不寻常的用例。目的是这样的:我希望客户能够提供一个字符串,例如:

"cars.honda.civic = On"

使用此字符串,我的代码将设置一个值,如下所示:

$data['cars']['honda']['civic'] = 'On';

如此简单地标记客户输入就足够了:

$token = explode("=",$input);
$value = trim($token[1]);
$path = trim($token[0]);
$exploded_path = explode(".",$path);

但是现在,如何使用$ exploded路径设置数组而不进行诸如eval之类的讨厌操作?


阅读 266

收藏
2020-05-26

共1个答案

一尘不染

使用引用运算符获取连续的现有数组:

$temp = &$data;
foreach($exploded as $key) {
    $temp = &$temp[$key];
}
$temp = $value;
unset($temp);
2020-05-26