将字符串拆分为二维数组

3
假设我有这样一个字符串。
apple:paper:red,pear:rock:blue,peach:scissors:green
你该如何将其拆分成多维数组?您可以进行嵌套拆分循环吗?就像在循环中先按逗号拆分字符串,然后再按冒号拆分。您如何使用explode实现此功能?我一定错过了一些明显的东西。最终结果应该像这样:
[0][0] = apple [0][1] = pear [0][2] = peach
[1][0] = paper [1][1] = rock [1][2] = scissors
[2][0] = red [2][1] = blue [2][2] = green
谢谢。
2个回答

10

您可以多次调用explode函数:

$string = 'apple:paper:red,pear:rock:blue,peach:scissors:green';
$result = array();
foreach (explode(',', $string) as $piece) {
    $result[] = explode(':', $piece);
}

这确实将字符串分割成了一个二维数组,但其内容并没有按照所需的方式排序。它最终变成了“00 apple 01 paper 02 red”,而不是“00 apple 01 pear 02 peach”。是否需要某种预排序? - oljones

1

试一下这个:

$string = 'apple:paper:red,pear:rock:blue,peach:scissors:green';
foreach (explode(',', $string) as $key=>$piece) {
  foreach (explode(':', $piece) as $k=>$column) {
    $result[$key][$k] = $column;
  }
}

可能有助于使其按照您的意愿进行。 (我已经测试过了,对我有效;))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接