拆分MYSQL结果,每个切片包含n个大小

时间:2012-11-14 06:28:15

标签: php mysql arrays

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

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

这可能吗?

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

引用的问题总是需要4个块,因此解决方案是创建大小为ceil(count($array) / 5)的块。

这种情况更容易,(最大)大小不变但块数变化。

因此答案很简单:

array_chunk($array, 5);

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