将带有两个分隔符的字符串拆分为分组数组(分解两次)

问题描述 投票:0回答:3
$string = "1-2-3-4 5-6-7-8";

'-' = 分隔值

' ' = 新数组

$array1 = explode("-", $string, 4);

到目前为止,我有这段代码,它将执行值 1 到 4,但我希望它在 4 处停止并创建一个新集合。

例如。


$SET_1[0] = 1
$SET_1[1] = 2
$SET_1[2] = 3
$SET_1[3] = 4

然后

$SET_2[0] = 5
$SET_2[1] = 6
$SET_2[2] = 7
$SET_2[3] = 8

如有任何建议,我们将不胜感激,在将它们放入数组后,我将如何扭转这种情况?

php split
3个回答
5
投票

使用array_chunk

$string = "1-2-3-4-5-6-7-8";
$data = array_chunk(explode('-', $string), 4);

将会返回

$data = array(
   array('1', '2', '3', '4'),
   array('4', '5', '6', '7')
);

** 更新 **

这将创建一个数组数组,每个数组最多包含 4 个元素。如果您需要可变大小的数组(由字符串中的

' '
指定),请改用它:

$string2 = "1-2-3-4 5-6-7-8-9-10";

function inner_split(&$items) {
    $items = explode('-', $items);
}
$data2 = explode(' ', $string2);
array_walk($data2, 'inner_split');

var_dump($data2);

将会输出

$data2 = array(
   array('1', '2', '3', '4'),
   array('5', '6', '7', '8', '9', '10')
);

0
投票

首先用空格分割成数字组块,然后用“-”将数字分割成数组。您需要使用正则表达式分割空格。

您应该使用

preg_split(regex, string)
并且空格字符在正则表达式中是 \s 。所以类似
preg_split('/\s/', $string)


0
投票

你想要的是多维数组:

所以类似

 $set[i] = explode('-',$string, 4)

然后将其嵌套在循环中并迭代字符串,您将能够访问每个单独的字符

 $set[i][j]

其中 i 是集合索引,j 是 1,2,3 或 4

© www.soinside.com 2019 - 2024. All rights reserved.