Php 将字符串分解为二维数组

Php 将字符串分解为二维数组,php,multidimensional-array,explode,Php,Multidimensional Array,Explode,对不起,如果这个问题已经解决了。我在这个网站上搜索过,找不到答案 我试图从一个字符串构建一个二维数组。字符串具有以下结构: $workers=“name1:age1/name2:age2/name3:age3” 其思想是使用“/”作为分隔符将数组分解为“persons”,然后使用“:”将每个“persons”分解为一个包含“name”和“age”的数组 我知道爆炸函数的基本知识: $array=explode(“分隔符”,“$string”); 但我不知道如何面对这一点,使之成为二维的。如有

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

我试图从一个字符串构建一个二维数组。字符串具有以下结构:

$workers=“name1:age1/name2:age2/name3:age3”
其思想是使用“/”作为分隔符将数组分解为“persons”,然后使用“:”将每个“persons”分解为一个包含“name”和“age”的数组

我知道爆炸函数的基本知识:

$array=explode(“分隔符”,“$string”);

但我不知道如何面对这一点,使之成为二维的。如有任何帮助,我们将不胜感激。

下面的方法应该可以奏效。目标是首先将数据分割成更小的块,然后逐步遍历每个块,并根据需要进一步细分

$row = 0;
foreach (explode("/", $workers) as $substring) {
    $col = 0;
    foreach (explode(":", $substring) as $value) {
        $array[$row][$col] = $value;
        $col++;
    }
    $row++;
}

像下面这样的方法应该可以奏效。目标是首先将数据分割成更小的块,然后逐步遍历每个块,并根据需要进一步细分

$row = 0;
foreach (explode("/", $workers) as $substring) {
    $col = 0;
    foreach (explode(":", $substring) as $value) {
        $array[$row][$col] = $value;
        $col++;
    }
    $row++;
}
请尝试以下代码:

<?php
$new_arr=array();
$workers="name1:age1/name2:age2/name3:age3";
$arr=explode('/',$workers);
foreach($arr as $value){
   $new_arr[]=explode(':',$value);
}
?>

尝试以下代码:

<?php
$new_arr=array();
$workers="name1:age1/name2:age2/name3:age3";
$arr=explode('/',$workers);
foreach($arr as $value){
   $new_arr[]=explode(':',$value);
}
?>

快速解决方案是

$results = [];
$data    = explode("/", $workers);
foreach ($data as $row) {
    $line = explode(":", $row);
    $results[] = [$line[0], $line[1]];
}
您还可以与自定义函数一起使用,该函数为您进行第二级拆分。

快速解决方案是

$results = [];
$data    = explode("/", $workers);
foreach ($data as $row) {
    $line = explode(":", $row);
    $results[] = [$line[0], $line[1]];
}

您还可以与自定义函数一起使用,该函数为您进行第二级拆分。

这是另一种方法,而不是多维方法:

parse_str(str_replace(array(':','/'), array('=','&'), $workers), $array);
print_r($array);
PHP>=5.4.0中的缩写:

parse_str(str_replace([':','/'], ['=','&'], $workers), $array);
print_r($array);

这是另一种方法,不是多层面的:

parse_str(str_replace(array(':','/'), array('=','&'), $workers), $array);
print_r($array);
PHP>=5.4.0中的缩写:

parse_str(str_replace([':','/'], ['=','&'], $workers), $array);
print_r($array);

还有另一种方法,因为你没有给出你所说的“二维”的例子

输出:

Array
(
    [name] => Array
        (
            [1] => age1
            [2] => age2
            [3] => age3
        )

)

还有另一种方法,因为你没有给出你所说的“二维”的例子

输出:

Array
(
    [name] => Array
        (
            [1] => age1
            [2] => age2
            [3] => age3
        )

)

谢谢我想它应该是某种内部的。。。我从编程开始,这种结构仍然让我头晕目眩,谢谢!我想它应该是某种内部的。。。我从编程开始,这种结构仍然让我头晕目眩。我所说的二维是指包含数组作为其元素的数组。。。抱歉,如果这不是“二维”的确切含义。正如我所说,我是编程新手。:)@“多维”这个词是正确的,但我想我们都明白你的意思。我的意思是它有不同的格式,你可以在我和其他人的例子中看到。示例:我的单个顶级“name”元素与其他许多顶级元素的名称=>值为第二级的多个顶级元素的对比。哪种方式是最好的最终取决于您想对数据做什么谢谢。我所说的二维是指包含数组作为其元素的数组。。。抱歉,如果这不是“二维”的确切含义。正如我所说,我是编程新手。:)@“多维”这个词是正确的,但我想我们都明白你的意思。我的意思是它有不同的格式,你可以在我和其他人的例子中看到。示例:我的单个顶级“name”元素与其他许多顶级元素的名称=>值为第二级的多个顶级元素的对比。哪种方式最好最终取决于你想对数据做什么每次我看到你的名字我就想到伯特·旺德斯通和安东·马弗顿跳舞然后伯特从帽子里拿出一个木头每次我看到你的名字我就想到伯特·旺德斯通和安东·马弗顿跳舞然后伯特从帽子里拿出一个木头