打破一个字符串

时间:2011-02-12 19:10:57

标签: php

$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

任何建议都会受到赞赏,在将它们放入数组之后,我将如何解决这个问题呢?

3 个答案:

答案 0 :(得分: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')
);

答案 1 :(得分:0)

首先将空格分成数字组块,然后用“ - ”将数字拆分成数组。您需要使用Regex分割空白。

你应该使用preg_split(regex, string),而空白字符在正则表达式中是\ s。所以像preg_split('/\s/', $string)

答案 2 :(得分:0)

你想要的是多维数组:

类似

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

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

 $set[i][j]

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