PHP字符串多维数组 [英] PHP String to multidimensional array
本文介绍了PHP字符串多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
比方说,我有我的变量以下字符串:
Let's say I have the following string in my variable:
$arr['data_|_multilanguage_|_en_|_field'] = 23;
我想改变这种成一个多维数组如下:
I want to transform that into a multidimensional array as follows:
$arr['data']['multilanguage']['en']['field'] = 23;
我做了一个递归函数
I did a recursive function
foreach ($arr as $outer_key => $outer_value) {
$parts = explode('_|_', $outer_key);
$reference =& $arr;
$final_key = count($parts) - 1;
foreach ($parts as $key => $part) {
if (!$final_key == $key) {
if (empty($reference[$part])) {
$reference[$part] = array();
}
$reference =& $reference[$part];
} else {
$reference[$part] = $arr[$str];
unset($arr[$outer_key]);
}
}
}
问题是,的var_dump
显示,孩子们参考。有没有更好的办法?
The problem is that the var_dump
shows that the children are reference. Is there a better way?
推荐答案
您只是有一个错误的如果()
语句:
You just have a wrong if()
statement :
if (!$final_key == $key) {}
!
将被评估的之前 ==
。结果
改变它:
!
will be evaluated before ==
.
Change it for :
if ($final_key != $key) {}
(你有另一个小问题最终 $参考[$一部分] =
任务,我纠正它在以下code)
(you've got another little issue in your final $reference[$part] =
assignment, I corrected it in the following code)
$arr['data_|_multilanguage_|_en_|_field'] = 23;
foreach ($arr as $outer_key => $outer_value) {
$parts = explode('_|_', $outer_key);
$reference =& $arr;
$final_key = count($parts) - 1;
foreach ($parts as $key => $part) {
if ($final_key != $key) {
if (empty($reference[$part])) {
$reference[$part] = array();
}
$reference =& $reference[$part];
} else {
$reference[$part] = $outer_value;
unset($arr[$outer_key]);
}
}
}
和这里是你的结果!
array(1) {
["data"]=>
array(1) {
["multilanguage"]=>
array(1) {
["en"]=>
&array(1) {
["field"]=>
int(23)
}
}
}
}
这篇关于PHP字符串多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文