строка — PHP перевод строки после 10-й запятой

Мне нужно разделить следующую строку:

333 ,351 ,359 ,360 ,370 ,371 ,385 ,492 ,512 ,514 ,528 ,539 ,546 ,628 ,630 ,634 ,636 ,702 ,706 ,709 ,710 ,715 ,718 ,719 ,763 ,770 ,803 ,822 ,823

в отдельные строки, где новая строка начинается после последней десятой запятой, если это имеет смысл?

Так это выглядит так:

333 ,351 ,359 ,360 ,370 ,371 ,385 ,492 ,512 ,514 ,

528 ,539 ,546 ,628 ,630 ,634 ,636 ,702 ,706 ,709 ,

710 ,715 ,718 ,719 ,763 ,770 ,803 ,822 ,823

3

Решение

Пожалуйста, проверьте комментарии для объяснения: —

 <?php
error_reporting(E_ALL); // check if any error occur
ini_set('display_errors',1); // display error
$string = '333 ,351 ,359 ,360 ,370 ,371 ,385 ,492 ,512 ,514 ,528 ,539 ,546 ,628 ,630 ,634 ,636 ,702 ,706 ,709 ,710 ,715 ,718 ,719 ,763 ,770 ,803 ,822 ,823'; // original string
echo $string; // echo original string
$array = explode(',',$string); // explode string with comma to make it array
echo "<pre/>";print_r($array); // print array
$chunked_array = array_chunk($array,10); // chunk array to each 10 counts and make a multidimensional array
$new_string = ''; // create a new empty string
foreach ($chunked_array as $chunked_ar){ // iterate through multi-dimensional array

$new_string .= implode(',',$chunked_ar)."\n"; // convert each array to string and add new line and assign it to new string variable
}
echo $new_string; // echo new variable.
?>

Выход:- https://eval.in/557389

Примечание: добавление кода error_reporting (первые две строки после <?php) всегда очень хорошая практика для выявления ошибок и их устранения. Благодарю.

1

Другие решения

Предполагая, что $ string это ваша предыдущая строка:

<?php

$myArray = explode(",", $string);
$newString = "";
$count = 0;
foreach ($myArray as $value)
{
$newString = $newString.$value.",";
$count++;
if ($count==10)
{
$count=0;
$newString = $newString."\n";
}
}

?>
1

Это сделает это …

$str = '333 ,351 ,359 ,360 ,370 ,371 ,385 ,492 ,512 ,514 ,528 ,539 ,546 ,628 ,630 ,634 ,636 ,702 ,706 ,709 ,710 ,715 ,718 ,719 ,763 ,770 ,803 ,822 ,823';

$iCount = 0;
foreach (explode(',',$str) as $iNum)
echo $iNum.' ,'.(++$iCount % 10 == 0 ? '<br>' : '');
1

Вы можете сделать это с одним вкладышем.

preg_replace('/((.*?,){10})/', "$1\n", $text);
1