Слияние подстрок в PHP

218
24 октября 2017, 03:12

Имеется массив с ключами идущими по порядку. Мне необходимо создать новый массив в каждой строке которого будет по несколько значений предыдущего массива. Как это сделать?

Вот пример. Имеется:

('1'=>'1','2'=>'2','3'=>'3','4'=>'4','5'=>'5','6'=>'6')

Надо чтобы получилось :

('1'=>'1,2''2'=>'3,4''3'=>'5,6');
Answer 1

Да, можно существенно упростить:

$int = 4; // Кол-во значений в одном элементе массива
$arr = ['1'=>'1','2'=>'2','3'=>'3','4'=>'4','5'=>'5','6'=>'6'];
$all = count($arr);
$int <= $all ?: $int = $all;
$join = function() use(&$out, &$i, &$tmp) {
    $out[++$i] = join(',', $tmp);
    $tmp = [];
};
$out = [];
$i = 0;
foreach ($arr as $k => $v) {
    $tmp[] = $v;
    $k % $int ?: $join();
}
empty($tmp) ?: $join();
echo '<pre>', print_r($out, 1), '</pre>';

Результат:

Array
(
    [1] => 1,2,3,4
    [2] => 5,6
)

UPD: Но так как выяснилось, что нумерация ключей результирующего массива идёт с нуля, то много проще будет вариант со встроенными инструментами для работы с массивами:

$int = 4; // Кол-во значений в одном элементе массива
$arr = ['1'=>'1','2'=>'2','3'=>'3','4'=>'4','5'=>'5','6'=>'6'];
$result = array_map(function($item) {
    return implode(',', $item);
}, array_chunk($arr, $int));
echo '<pre>'; print_r($result); echo '</pre>';

Результат такой же:

Array
(
    [1] => 1,2,3,4
    [2] => 5,6
)
Answer 2
<?php
$str="";
$numberOfElements= ; //Кол-во элементов в одной строке после слияния.
end($str);
$lastKey = key($str);
$startid=0;
$numberOfStrings=ceil($lastKey/$numberOfElements);
for ($i = 0; $i < $numberOfStrings; $i++) {
    for ($id = $startid; $id < $startid+$numberOfElements; $id++) {
        $subString[$i][$id] = $str[$id];
    }
    $startid+=$numberOfElements;
    $array[$i]=$subString[$i];
    $comma_separated[$i] = implode(" ", $array[$i]);
}


print_r($comma_separated);

Как-то так у меня получилось. Наверняка можно и оптимальнее :)

READ ALSO
Пагинатор на классах

Пагинатор на классах

В общем нужно добавить пагинаторЕсть вывод таблицы из базы

253
Анализ баз данных с помощью PHP [требует правки]

Анализ баз данных с помощью PHP [требует правки]

Создаю административную панель сайтаХочу сделать модуль который анализирует базу таблицу из базы

174
В новом Laravel проект ошибки при запуске npm run watch

В новом Laravel проект ошибки при запуске npm run watch

Всем привет, Создал новый Laravel проект

239
Вопрос по паттерну ActiveRecord

Вопрос по паттерну ActiveRecord

В Active Record объектный экземпляр привязан к единственной строке в таблице

229