对不起,如果这个问题已经解决了。我在网站上搜索过,找不到答案。
我正在尝试从字符串构建二维数组。该字符串具有以下结构:
$workers="name1:age1/name2:age2/name3:age3"
我的想法是使用“/”作为分隔符将数组分解为“person”,然后使用“:”将每个“person”分解为包含“name”和“age”的数组。
我知道爆炸功能的基础知识:
$array=explode("separator","$string");
但是我不知道如何面对这个让它成为二维的。任何帮助将不胜感激。
答案 0 :(得分:1)
以下内容应该有效。目标是首先将数据拆分为更小的块,然后逐步执行每个块,并根据需要进一步细分。
$row = 0;
foreach (explode("/", $workers) as $substring) {
$col = 0;
foreach (explode(":", $substring) as $value) {
$array[$row][$col] = $value;
$col++;
}
$row++;
}
答案 1 :(得分:1)
$array = array();
$workers = explode('/', "name1:age1/name2:age2/name3:age3");
foreach ($workers as $worker) {
$worker = explode(':', $worker);
$array[$worker[0]] = $worker[1];
}
答案 2 :(得分:1)
试试这段代码:
<?php
$new_arr=array();
$workers="name1:age1/name2:age2/name3:age3";
$arr=explode('/',$workers);
foreach($arr as $value){
$new_arr[]=explode(':',$value);
}
?>
答案 3 :(得分:1)
快速解决方案
$results = [];
$data = explode("/", $workers);
foreach ($data as $row) {
$line = explode(":", $row);
$results[] = [$line[0], $line[1]];
}
您还可以将array_walk与自定义函数一起使用,该函数会为您执行第二级分割。
答案 4 :(得分:1)
这是另一种方法,而不是多维方法:
parse_str(str_replace(array(':','/'), array('=','&'), $workers), $array);
print_r($array);
PHP缩短&gt; = 5.4.0:
parse_str(str_replace([':','/'], ['=','&'], $workers), $array);
print_r($array);
答案 5 :(得分:1)
还有另一种方法,因为你并没有真正举例说明你所谓的“二维”......
$workers="name1:age1/name2:age2/name3:age3";
parse_str(rtrim(preg_replace('~name(\d+):([^/]+)/?~','name[$1]=$2&',$workers),'&'),$names);
输出:
Array
(
[name] => Array
(
[1] => age1
[2] => age2
[3] => age3
)
)