问题:
点语法字符串如何转换,例如 " this.that.other”,可以有效地转换为多维数组PHP?
答案:
一个高效的解决方案是利用如下的递归函数:
function assignArrayByPath(&$arr, $path, $value, $separator='.') { $keys = explode($separator, $path); foreach ($keys as $key) { $arr = &$arr[$key]; } $arr = $value; }
这个函数迭代地遍历数组,使用“.”作为分隔符,一路创建任何缺失的键,直到达到所需的属性并设置其值。
例如,使用以下示例字符串:“s1.t1.column.1 = size:33 %”,该函数将生成一个相当于:
$source = []; assignArrayByPath($source, 's1.t1.column.1', 'size:33%'); print_r($source); // Outputs: ['s1' => ['t1' => ['column' => ['1' => 'size:33%']]]]的数组结构
以上是如何在 PHP 中高效地将点语法字符串转换为多维数组?的详细内容。更多信息请关注PHP中文网其他相关文章!