この質問は、基本的にここでのSoulieBabyの質問に似ています。特定の長さを含むように結果を分割したかったことを除いて、MYSQLの結果を4つの配列に分割します。
たとえば、長さが9の配列を分割し、分割された配列に5つの長さを含める結果が必要だったとします。したがって、最初の配列は5になり、2番目の配列は4になります。
これは可能ですか?
助けてくれてありがとう!
この質問は、基本的にここでのSoulieBabyの質問に似ています。特定の長さを含むように結果を分割したかったことを除いて、MYSQLの結果を4つの配列に分割します。
たとえば、長さが9の配列を分割し、分割された配列に5つの長さを含める結果が必要だったとします。したがって、最初の配列は5になり、2番目の配列は4になります。
これは可能ですか?
助けてくれてありがとう!
参照された質問は常に4つのチャンクが必要だったため、解決策はサイズのチャンクを作成することでしたceil(count($array) / 5)
。
この場合は簡単で、(最大)サイズは一定ですが、チャンクの数は異なります。
したがって、答えは単純です。
array_chunk($array, 5);
試す:
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',',');