Имеется массив с ключами идущими по порядку. Мне необходимо создать новый массив в каждой строке которого будет по несколько значений предыдущего массива. Как это сделать?
Вот пример. Имеется:
('1'=>'1','2'=>'2','3'=>'3','4'=>'4','5'=>'5','6'=>'6')
Надо чтобы получилось :
('1'=>'1,2''2'=>'3,4''3'=>'5,6');
Да, можно существенно упростить:
$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
)
<?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);
Как-то так у меня получилось. Наверняка можно и оптимальнее :)
Виртуальный выделенный сервер (VDS) становится отличным выбором
Создаю административную панель сайтаХочу сделать модуль который анализирует базу таблицу из базы
Всем привет, Создал новый Laravel проект
В Active Record объектный экземпляр привязан к единственной строке в таблице