1

这个问题与 SoulieBaby 的问题基本类似:Split MYSQL results into 4 arrays,只是我想将结果拆分为包含特定长度。

说,我想要一个长度为 9 的数组的结果被拆分,并且拆分后的数组包含 5 个长度。所以第一个数组有 5 个,第二个数组有 4 个。

这可能吗?

非常感谢您的帮助!

4

2 回答 2

1

引用的问题希望始终有 4 个块,因此解决方案是创建 size 块ceil(count($array) / 5)

这种情况更容易,(最大)大小是恒定的,但块的数量会有所不同。

因此答案很简单:

array_chunk($array, 5);
于 2012-11-14T06:56:43.183 回答
0

尝试:

DELIMITER $$
CREATE PROCEDURE split (in data varchar(500),in cad char(1))
BEGIN
    declare pos int default 0;
    declare numero int default 0;
    declare van int default 0;
    declare a varchar(500) default '';
    drop TEMPORARY table IF EXISTS tmp_split;
    create TEMPORARY table tmp_split(dato varchar(500)) ENGINE=MEMORY; 

    set pos=LOCATE(cad,data);
    while pos<>0 do
        set numero=numero+1;
        set pos=LOCATE(cad,data,pos+1);
    end while;
    set a=SUBSTRING_INDEX(data,cad,1);
    while numero>van do        
        set data=SUBSTRING(data,LENGTH(a)+2);
        insert into tmp_split values (a);
        set a=SUBSTRING_INDEX(data,cad,1);
        set van=van+1;
    end while;
    insert into tmp_split values (a);
    select * from tmp_split;
END

call split('1,2,5,52,64,365,9714,253,6697,8,9,2,62',',');

于 2012-11-15T18:25:55.100 回答