将字符串分解为二维数组

时间:2014-02-24 22:08:02

标签: php multidimensional-array explode

对不起,如果这个问题已经解决了。我在网站上搜索过,找不到答案。

我正在尝试从字符串构建二维数组。该字符串具有以下结构:

$workers="name1:age1/name2:age2/name3:age3"

我的想法是使用“/”作为分隔符将数组分解为“person”,然后使用“:”将每个“person”分解为包含“name”和“age”的数组。

我知道爆炸功能的基础知识:

$array=explode("separator","$string");

但是我不知道如何面对这个让它成为二维的。任何帮助将不胜感激。

6 个答案:

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

)