这个问题基本上类似于SoulieBaby的问题:Split MYSQL results into 4 arrays,除了我想将结果拆分为包含特定长度。
说,我想要一个长度为9的数组的结果被拆分,并且拆分的数组包含5个长度。所以第一个数组将有5个,第二个数组将有4个。
这可能吗?
非常感谢您的帮助!
答案 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',',');