Php 从字符串获取数组

Php 从字符串获取数组,php,arrays,string,split,Php,Arrays,String,Split,我有一个字符串示例123456789999987654321112309101 First 3 characters is data0 Second 2 characters is data1 Third 9 characters is data2 Fourth 5 characters is data3 Fifrt 12 characters is data4 如何在数据长度不同的数组中拆分此字符串。您可以使用以下函数: $str = '123456789999998765432111230

我有一个字符串示例
123456789999987654321112309101

First 3 characters is data0
Second 2 characters is data1
Third 9 characters is data2
Fourth 5 characters is data3
Fifrt 12 characters is data4
如何在数据长度不同的数组中拆分此字符串。

您可以使用以下函数:

$str = '1234567899999987654321112309101';
$res = [];
$res[] = substr($str,0,3);    // chars 1-3
$res[] = substr($str,3,2);    // chars 4-5
$res[] = substr($str,5,9);    // chars 6-14
$res[] = substr($str,14,5);   // chars 15-19
$res[] = substr($str,19,12);  // chars 20-31
产出:

Array
(
    [0] => 123
    [1] => 45
    [2] => 678999999
    [3] => 87654
    [4] => 321112309101
)
Array
(
    [data0] => 123
    [data1] => 45
    [data2] => 678999999
    [data3] => 87654
    [data4] => 321112309101
)

如果字符串太大,并且定义了长度值数组,则可以使用此循环:

$str = '1234567899999987654321112309101';

$len = [3,2,9,5,12];

$res = [];
$i = 0;
foreach($len as $ind => $l){
    $res['data'.$ind] = substr($str,$i,$l);
    $i += $l;
}
产出:

Array
(
    [0] => 123
    [1] => 45
    [2] => 678999999
    [3] => 87654
    [4] => 321112309101
)
Array
(
    [data0] => 123
    [data1] => 45
    [data2] => 678999999
    [data3] => 87654
    [data4] => 321112309101
)

好的,我知道这个解决方案的有效性,但是有内联解决方案吗?我有2048个长度的字符串,包含超过100个数据。@Zuck19,检查它。@AksenP他提到有超过100个数据,所以这两个解决方案都不起作用,在这个问题中,他需要指定数据长度的分布。@Zuck19应该在问题中。你的问题太少了。不清楚数据长度不同的
是否会因数据点而异。添加三个样本以及它们应该如何分离。@Ajith,你不是OP。他定义了几个数据的长度,因此,他可以非常轻松地创建
$len
数组。