Элегантный способ сделать столбец на основе массива строк

В настоящее время у меня есть массив, где каждое поле содержит другой массив с фактическими данными, которые я хочу отобразить. Этот массив основан на столбцах, то есть каждое поле представляет собой один столбец.

Насколько я могу сказать, для рендеринга этих данных в html мне нужно было бы перевернуть их так, чтобы они основывались на строках, то есть мне нужно было бы пройти через каждое поле и каждый элемент массива в этом поле и сгенерировать новый массив, где сейчас каждый элемент будет строкой.

Мне интересно, есть ли более чистое и элегантное решение, чем две вложенные петли. Вот некоторые примеры данных:

$data = array(
'ID1' => array('Column 1', 'Cell 1', 'Cell 2', 'Cell3')
'ID2' => array('Column 2', 'Cell 1', 'Cell 2', 'Cell3'),
'ID3' => array('Column 3', 'Cell 1', 'Cell 2'),
);

Конечная цель — создать HTML-таблицу (возможно, используя div, а не table / tr / td)

0

Решение

Я не знаю ни одного встроенного метода, но вы можете легко перевернуть массив, как этот.
Сначала я нахожу максимальное количество столбцов, затем зацикливаю массив с индексом в цикле for и использую его в array_column.
Я также опускаю «столбец» в этом коде.
Я полагаю, вам это не нужно.
Если вам это нужно, измените цикл for на 0.

//Find lenghts of columns
Foreach($data as $column){
$count[] = count($column);
}
$count = max($count);// get the max number of columns

For($i=1;$i<$count;$i++){
$arr["row" . $i] = array_column($data, $i);
}

Var_dump($arr);

Вы можете попробовать это здесь, я использую другие имена ячеек только для того, чтобы убедиться, что это правильно.

https://3v4l.org/vEu4r

0

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector