Вывод массив колонки php

Output a php multi-dimensional array to a html table

I have a form that has 8 columns and a variable number of rows which I need to email to the client in a nicely formatted email. The form submits the needed fields as a multidimensional array. Rough example is below:

        

This form is formatted in a table, and rows can be added to it dynamically. What I’ve been unable to do is get a properly formatted table out of the array. This is what I’m using now (grabbed from the net).

'; foreach($arr as $arrs) < echo ''; foreach($arrs as $item) < echo "$item"; > echo ''; > echo '; >; ?> 

This works perfectly for a single row of data. If I try submitting 2 or more rows from the form then one of the columns disappears. I’d like the table to be formatted as:

| top | Bottom | Slant | Fitter | Washer | Fabric | Colours | Quantity | ------------------------------------------------------------------------ |value| value | value | value | value | value | value | value | 

with additional rows as needed. But, I can’t find any examples that will generate that type of table! It seems like this should be something fairly straightforward, but I just can’t locate an example that works the way I need it too.

Источник

PHP array_column() Function

// An array that represents a possible record set returned from a database
$a = array(
array(
‘id’ => 5698,
‘first_name’ => ‘Peter’,
‘last_name’ => ‘Griffin’,
),
array(
‘id’ => 4767,
‘first_name’ => ‘Ben’,
‘last_name’ => ‘Smith’,
),
array(
‘id’ => 3809,
‘first_name’ => ‘Joe’,
‘last_name’ => ‘Doe’,
)
);

Читайте также:  Ubuntu php ini short open tag

$last_names = array_column($a, ‘last_name’);
print_r($last_names);
?>

Definition and Usage

The array_column() function returns the values from a single column in the input array.

Syntax

Parameter Values

Parameter Description
array Required. Specifies the multi-dimensional array (record-set) to use. As of PHP 7.0, this can also be an array of objects.
column_key Required. An integer key or a string key name of the column of values to return. This parameter can also be NULL to return complete arrays (useful together with index_key to re-index the array)
index_key Optional. The column to use as the index/keys for the returned array

Technical Details

Return Value: Returns an array of values that represents a single column from the input array
PHP Version: 5.5+

More Examples

Example

Get column of last names from a recordset, indexed by the «id» column:

// An array that represents a possible record set returned from a database
$a = array(
array(
‘id’ => 5698,
‘first_name’ => ‘Peter’,
‘last_name’ => ‘Griffin’,
),
array(
‘id’ => 4767,
‘first_name’ => ‘Ben’,
‘last_name’ => ‘Smith’,
),
array(
‘id’ => 3809,
‘first_name’ => ‘Joe’,
‘last_name’ => ‘Doe’,
)
);

$last_names = array_column($a, ‘last_name’, ‘id’);
print_r($last_names);
?>

Источник

Как вывести массив в три колонки?

alt text

Но почему-то съезжают строки: Как еще можно корректно отобразить массив в три колонки? Подсказали банально, разбить массив на три части и впихнуть в три колонки (ячейки таблицы). ну разбил я длину массива на три PHP код:

$colum = round( count($html) / 3); 

Я не Ванга, но у вас же тег table не закрыт. Тег tr внутри td. Это просто ночной кошмар табличных верстальщиков. Вот [тут][1] смотрите как работать с таблицами. [1]: htmlbook.ru/html/table

Читайте также:  Php функция проверки существования переменной

5 ответов 5

//variant 1. Читаем сначала первую колонку, потом вторую итп:

array_slice — разбиваете массив на нужное количество массива. Запускаете цикл с количеством итераций, равном длине наибольшей колонки. На каждой итерации запускаете внутренний цикл, достающий при помощи array_shift верхний(начальный) элемент каждой части массива и запихивающий в соответствующую ячейку таблицы.

Таблица при этом формируется все равно построчно.

//variant2: Читаем построчно:

построчно формируете таблицу, склеивая при помощи implode кусочки массива, длиной, равной числу столбцов. Кусочки извлекаете при помощи array_slice.

Привожу код, который я использую. Разбиение на 4 столбца. Думаю, понятно. Если нет, разъясню.

 
'; for($j=0;$j<$TagRows&&$i<$TagsCount;$j++,$i++) < $TagID=mysql_result($tags,$i,'id'); $TagValue=mysql_result($tags,$i,'value'); if($j) echo '
'; echo ' '.$TagValue; > echo '
'; > ?>

Как подметил evlanoff (18 часов назад), разъезжается из-за вот этого раздолбайства:

А почему бы Вам просто не использовать циклы для вывода? Правда если делать через такие циклы, то потребуется их 2 (вложенных). А это, насколько я знаю, грузит систему. Я так и не выучил как рассчитывать сложность. Если требуется подсказать, как это сделать — могу написать сюда же.

Если Вам это нужно, можно легко вывести таблицей.

Вот простое решение вывести массив в три колонки при помощи CSS Ссылка Jsfiddle

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.7.27.43548

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

Оцените статью