PHP多维数组foreach循环实现指定文本拼接输出问题
用PHP foreach实现指定格式的数组输出
我来帮你搞定这个需求!你想要的是把二维数组里的每个子数组按照text-start 元素1 text11 元素2 text22 元素3 text-end的格式输出,多个子数组用逗号分隔。之前的for循环没处理好开头结尾和对应元素的后缀文本,用foreach可以轻松实现,下面给你两种方案:
基础实现方案
这个方案直接遍历输出,逻辑清晰,适合快速理解:
<?php // 先定义你的二维数组 $marks = array( array('a1', 'a2', 'a3'), array('b1', 'b2', 'b3'), array('c1', 'c2', 'c3') ); // 定义每个元素对应的后缀文本,和子数组元素位置一一对应 $suffixes = [' text11 ', ' text22 ', ' text-end']; // 外层foreach遍历每个子数组 foreach ($marks as $row) { // 先输出每一行的开头 echo "text-start "; $index = 0; // 内层foreach遍历子数组里的每个元素 foreach ($row as $item) { // 输出元素+对应后缀 echo $item . $suffixes[$index]; $index++; } // 子数组输出完后加逗号分隔 echo ","; } ?>
优化方案(避免末尾多余逗号)
上面的方案最后会多一个逗号,如果你想更严谨,可以先把每一行的内容存到数组里,最后用implode连接:
<?php $marks = array( array('a1', 'a2', 'a3'), array('b1', 'b2', 'b3'), array('c1', 'c2', 'c3') ); $outputLines = []; $suffixes = [' text11 ', ' text22 ', ' text-end']; foreach ($marks as $row) { $currentLine = "text-start "; $index = 0; foreach ($row as $item) { $currentLine .= $item . $suffixes[$index]; $index++; } // 把组装好的一行存入数组 $outputLines[] = $currentLine; } // 用逗号连接所有行,完美输出 echo implode(",", $outputLines); ?>
这两种方案都能输出你想要的结果:text-start a1 text11 a2 text22 a3 text-end,text-start b1 text11 b2 text22 b3 text-end,text-start c1 text11 c2 text22 c3 text-end
核心思路就是:外层循环处理每个子数组,先输出开头文本;内层循环处理每个元素,根据元素的位置添加对应的后缀文本;最后处理好多数组之间的分隔。
内容的提问来源于stack exchange,提问作者art
相关产品推荐
相关产品推荐

