Я стараюсь избегать использования петель в таких ситуациях.Вы должны использовать implode () для объединения списков с общим разделителем и использовать array_map () для обработки любой обработки в этом массиве перед объединением.Обратите внимание на следующие реализации, которые должны выражать универсальность этих функций.Карта массивов может принимать строку (имя функции), представляющую либо встроенную функцию, либо определяемую пользователем функцию (первые 3 примера).Вы можете передать ему функцию с помощью create_function () или передать лямбда / анонимную функцию в качестве первого параметра.
$a = array(1, 2, 3, 4, 5);
// Using the user defined function
function fn ($n) { return $n * $n; }
printf('[%s]', implode(', ', array_map('fn', $a)));
// Outputs: [1, 4, 9, 16, 25]
// Using built in htmlentities (passing additional parameter
printf('[%s]', implode(', ', array_map( 'intval' , $a)));
// Outputs: [1, 2, 3, 4, 5]
// Using built in htmlentities (passing additional parameter
$b = array('"php"', '"&<>');
printf('[%s]', implode(', ', array_map( 'htmlentities' , $b, array_fill(0 , count($b) , ENT_QUOTES) )));
// Outputs: ["php", "&<>]
// Using create_function <PHP 5
printf('[%s]', implode(', ', array_map(create_function('$n', 'return $n + $n;'), $a)));
// Outputs: [2, 4, 6, 8, 10]
// Using a lambda function (PHP 5.3.0+)
printf('[%s]', implode(', ', array_map(function($n) { return $n; }, $a)));
// Outputs: [1, 2, 3, 4, 5]