我的代码如下:
$text = "john1,steven2,lex66,e1esa2,444e3, and so forth[...]"; // up to about 180 entries
$arrayChunk = array_chunk(explode(',', $text), 39); // which leaves me with 5 chunks
foreach ($arrayChunk as $key => $value) {
if (is_array($value)) {
foreach ($value as $subkey => $subvalue) {
$string = $subvalue;
}
echo $string; // echo all the subvalues (but only echos the first)
}
}
所以,我最终得到了5个块,我需要foreach来回显这个数组的所有子值:
john1,steven2,[...]
doe4,joe7,[...]
svend2,ole5[...]
olga7,jan3[...]
leila9,aija9[...]
而不仅仅是
john1
doe4
svend2
olga7
leila9
答案 0 :(得分:1)
您正在使用:
$string = $subvalue;
然后只输出一个。如果你想回显所有,请使用implode:
foreach ($arrayChunk as $key => $value)
{
if (is_array($value))
{
echo implode(', ', $value) . "<br>";
}
}
答案 1 :(得分:0)
echo implode(', ', $value);
为换行添加echo "<br>";
foreach ($arrayChunk as $key => $value)
{
if (is_array($value))
{
echo implode(', ', $value);
echo "<br>";
}
}
答案 2 :(得分:0)
我建议使用更直接的正则表达式方法,而不是explode()
,array_chunk()
,foreach()
,is_array()
,implode()
。
我的方法在第39个逗号上拆分你的字符串 - 没有额外的处理,简单。
代码:(Demo)
$text="a,b,c,d,e,f,g,h,i,10,a,b,c,d,e,f,g,h,i,20,a,b,c,d,e,f,g,h,i,30,a,b,c,d,e,f,g,h,i,40,a,b,c,d,e,f,g,h,i,50";
$groups=preg_split('/(?:[^,]+\K,){39}/',$text);
foreach($groups as $group){
echo "$group\n";
}
输出:
a,b,c,d,e,f,g,h,i,10,a,b,c,d,e,f,g,h,i,20,a,b,c,d,e,f,g,h,i,30,a,b,c,d,e,f,g,h,i
40,a,b,c,d,e,f,g,h,i,50
该模式将匹配值后跟逗号39次,并在尾随逗号上重新启动全字符串匹配(使用\K
) - 此重启意味着任何字符串都不会有逗号。在$groups
。
这是Pattern Demo。