如何通过foreach循环将数组所有元素拼接为指定格式存入变量?
问题解决:将数组元素拼接为逗号分隔的字符串
嗨,我来帮你搞定这个问题~
问题根源
你当前的foreach循环里,每次执行$allData = $hasil;都会用新元素覆盖掉之前的值,循环结束后$allData自然只会保留最后一个元素36,这就是输出不符合预期的核心原因。
解决方案
要得到allData => 2,36的结果,本质是要把数组元素拼接成逗号分隔的字符串,这里有两种简单的实现方式:
方式1:用implode()直接拼接(最简洁高效)
implode()是PHP专门用来将数组元素拼接为字符串的函数,完全不需要手动写循环:
$data = Array ( 0 => 2, 1 => 36 ); // 用逗号作为分隔符拼接数组元素 $allData = implode(',', $data); $array = array( 'allData' => $allData ); print_r($array);
执行后输出就是你想要的:
Array ( [allData] => 2,36 )
方式2:手动用foreach拼接(适合需要自定义逻辑的场景)
如果一定要用foreach来实现,可以先初始化一个空字符串,然后循环里逐步拼接元素,注意处理逗号的位置:
$data = Array ( 0 => 2, 1 => 36 ); $allData = ''; foreach ($data as $index => $hasil) { // 不是第一个元素时,先添加逗号分隔符 if ($index !== 0) { $allData .= ','; } // 拼接当前元素 $allData .= $hasil; } $array = array( 'allData' => $allData ); print_r($array);
额外说明
如果你其实希望allData的值是一个数组(而不是字符串),那更简单,直接把原数组赋值过去就行:
$data = Array ( 0 => 2, 1 => 36 ); $array = array( 'allData' => $data ); print_r($array);
输出会是:
Array ( [allData] => Array ( [0] => 2 [1] => 36 ) )
内容的提问来源于stack exchange,提问作者Genta Haetami Putra
相关产品推荐
相关产品推荐

