如何在php中将字符串拆分为多个数组?
我有这样的字符串:$string=1A1R0A,我想将该$string拆分为两个数组:如何在php中将字符串拆分为多个数组?,php,arrays,string,split,grouping,Php,Arrays,String,Split,Grouping,我有这样的字符串:$string=1A1R0A,我想将该$string拆分为两个数组: array1 ( [0] => 1 [1] => 1 [2] => 0 ) array2 ( [0] => A [1] => R [2] => A ) 你能帮我做那件事吗 我试过像这样使用str_split: $subs = str_split($string,1); Array ( [0] => 1
array1 (
[0] => 1
[1] => 1
[2] => 0
)
array2 (
[0] => A
[1] => R
[2] => A
)
你能帮我做那件事吗
我试过像这样使用str_split:
$subs = str_split($string,1);
Array (
[0] => 1
[1] => A
[2] => 0
[3] => R
[4] => 1
[5] => A
)
但它不起作用,因为它将使数组如下所示:
$subs = str_split($string,1);
Array (
[0] => 1
[1] => A
[2] => 0
[3] => R
[4] => 1
[5] => A
)
德莫
Démo您可以使用array_filter来过滤数组,并保持相同的字符索引和str_split来实现这一点。然后只要返回字符是否为数字即可
这也会将它们的实际索引点保留在原始字符串中
通过维护char索引,您可以确定数值在字符串中的位置
foreach($arr->numeric as $key => $value) {
$pos = ++$key;
echo "{$value} is position {$pos} in the String.";
}
您可以使用array_filter来过滤数组,并保持相同的char indexs和str_split来实现这一点。然后只要返回字符是否为数字即可
这也会将它们的实际索引点保留在原始字符串中
通过维护char索引,您可以确定数值在字符串中的位置
foreach($arr->numeric as $key => $value) {
$pos = ++$key;
echo "{$value} is position {$pos} in the String.";
}
您可以使用正则表达式匹配后跟非数字的所有数字模式
preg_match_all('/(\d+)(\D+)/', $string, $matches);
您的数字/字母数组将出现在匹配项中。您可以直接在$matches[1]和$matches[2]中使用它们,或者将它们提取为更可读的格式
$result = array_combine(['numbers', 'letters'], array_slice($matches, 1));
您可以使用正则表达式匹配后跟非数字的所有数字模式
preg_match_all('/(\d+)(\D+)/', $string, $matches);
您的数字/字母数组将出现在匹配项中。您可以直接在$matches[1]和$matches[2]中使用它们,或者将它们提取为更可读的格式
$result = array_combine(['numbers', 'letters'], array_slice($matches, 1));
preg_match_all提供了一种无循环的直接、单功能技术
捕获数字$out[1]并将字母存储在与$out[0]匹配的完整字符串中。在$out中没有不必要的子数组
代码:
输出:
array (
0 =>
array (
0 => '1',
1 => '1',
2 => '0',
),
1 =>
array (
0 => 'A',
1 => 'R',
2 => 'A',
),
)
--- or ---
array (
0 => '1',
1 => '1',
2 => '0',
)
array (
0 => 'A',
1 => 'R',
2 => 'A',
)
array (
0 =>
array (
0 => '1',
1 => '2',
2 => '3',
3 => '4',
),
1 =>
array (
0 => 'B',
1 => 'A',
2 => 'R',
3 => 'C',
4 => 'D',
),
)
如果您的字符串可能以字母开头,或者您的字母数字序列不能保证交替,则可以使用此直接技术来分隔这两个字符类别
代码:
输出:
array (
0 =>
array (
0 => '1',
1 => '1',
2 => '0',
),
1 =>
array (
0 => 'A',
1 => 'R',
2 => 'A',
),
)
--- or ---
array (
0 => '1',
1 => '1',
2 => '0',
)
array (
0 => 'A',
1 => 'R',
2 => 'A',
)
array (
0 =>
array (
0 => '1',
1 => '2',
2 => '3',
3 => '4',
),
1 =>
array (
0 => 'B',
1 => 'A',
2 => 'R',
3 => 'C',
4 => 'D',
),
)
preg_match_all提供了一种无循环的直接、单功能技术
捕获数字$out[1]并将字母存储在与$out[0]匹配的完整字符串中。在$out中没有不必要的子数组
代码:
输出:
array (
0 =>
array (
0 => '1',
1 => '1',
2 => '0',
),
1 =>
array (
0 => 'A',
1 => 'R',
2 => 'A',
),
)
--- or ---
array (
0 => '1',
1 => '1',
2 => '0',
)
array (
0 => 'A',
1 => 'R',
2 => 'A',
)
array (
0 =>
array (
0 => '1',
1 => '2',
2 => '3',
3 => '4',
),
1 =>
array (
0 => 'B',
1 => 'A',
2 => 'R',
3 => 'C',
4 => 'D',
),
)
如果您的字符串可能以字母开头,或者您的字母数字序列不能保证交替,则可以使用此直接技术来分隔这两个字符类别
代码:
输出:
array (
0 =>
array (
0 => '1',
1 => '1',
2 => '0',
),
1 =>
array (
0 => 'A',
1 => 'R',
2 => 'A',
),
)
--- or ---
array (
0 => '1',
1 => '1',
2 => '0',
)
array (
0 => 'A',
1 => 'R',
2 => 'A',
)
array (
0 =>
array (
0 => '1',
1 => '2',
2 => '3',
3 => '4',
),
1 =>
array (
0 => 'B',
1 => 'A',
2 => 'R',
3 => 'C',
4 => 'D',
),
)
@汉恩:字母和数字总是交替的吗?只有一个示例字符串,我们只能猜测。@hann字母和数字总是交替的吗?只有一个示例字符串,我们只能猜测。