用于带有多个定界符的爆炸的一行

One-liner for explode with multiple delimiters

有没有好看的单线爆下面:

 $my_string = '0:abcd1234,0:wxyz9876,1:defg5678';

预期结果:

array(
      [0] => array([0] => 0, [1] => 'abcd1234'),
      [1] => array([0] => 0, [1] => 'wxyz9876'),
      [2] => array([0] => 1, [1] => 'defg5678')
)

我知道我可以 $my_array = explode(',', $my_string) 然后遍历检索到的数组和 explode(':', $my_array[$i]),但我想知道是否有更好看的方法(没有循环)来做到这一点。

不用循环,直接用array_map:

array_map(function($str) {return explode(':',$str);}, explode(",",$my_string));

如果您使用的是 PHP 7.4,它会变得更短:

array_map(fn($str) => explode(':',$str), explode(",",$my_string));

通过使用 array_map()

用一个衬垫和更好看的方式完成
$my_array = array_map(function($val) {return explode(':', $val);}, explode(',', $my_string));

工作演示: https://3v4l.org/ti3Aq