- Php вывести массив как таблицу
- Вывод двумерного массива в виде таблицы
- Когда может понадобиться вывод двумерного массива в виде таблицы
- One Reply to “Вывод двумерного массива в виде таблицы”
- Добавить комментарий Отменить ответ
- Область основной боковой панели
- Популярные записи
- Свежие комментарии
- Свежие записи
- Облако меток
- Архивы
- Рубрики
- Вывод таблицы из массива
- array_column
- Описание
- Список параметров
- Возвращаемые значения
- Список изменений
- Примеры
- User Contributed Notes 25 notes
Php вывести массив как таблицу
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel
Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.
Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо
После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..
Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.
Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.
На последок как оно происходит на форумах
Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.
Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12
Источник
Вывод двумерного массива в виде таблицы
Когда может понадобиться вывод двумерного массива в виде таблицы
Возможно ситуация, когда через класс для работы с БД в php получили в массив результат выполнения sql-запроса.
Тогда нужно вывести двумерный массив в виде таблицы на странице пользователя.
Допустим, что имя массива с полученными данным — $rez
Тогда код, выполняющий непосредственное формирование html-разметки таблицы, будет таким:
В результате будет выведена таблица, содержащая количество колонок, равное количеству «колонок» массива. А вот если нужно попеременное выделение строк таблицы, тогда делайте так, как указано в этой статье.
One Reply to “Вывод двумерного массива в виде таблицы”
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Область основной боковой панели
Популярные записи
Свежие комментарии
- modeaug к записи Динамическая отметка чекбоксов в форме редактирования
- WarrenNet к записи Динамическая отметка чекбоксов в форме редактирования
- CharlesAbott к записи Динамическая отметка чекбоксов в форме редактирования
- Pandea к записи Динамическая отметка чекбоксов в форме редактирования
- Kolyabix к записи Порты gmail
Свежие записи
Облако меток
Архивы
Рубрики
Никакого спама! Только короткие анонсы новых материалов.
Если Вам это не интересно — просто закройте это окно. Оно больше не появится в течение 30 дней. Спасибо.
Источник
Вывод таблицы из массива
Без использования на данный момент mysql я создал массив и предполагаю сделать его вывод , в правильном ли направлении я иду?
как я понимаю мне нужно будет циклично вывести массив , но как сделать подсчет всего остального??
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Вывод массива в виде таблицы
$size = rand(1,4); echo «Размер масива = $size «; for ($i=0;$i 14
извиняюсь за свои вопросы , но последний обещаю , а как еще снизу вывести средний балл?
Добавлено через 9 минут
Таким же методом можно?)Или без грамотно ?
Предусмотреть вывод исходного массива в виде таблицы
Разработать алгоритм и программу для вычисления среднего арифметического любых указанных строки.
[Fortran-90] Вывод двумерного массива в виде таблицы
Добрый день. Вот это есть, с неявными циклами write(*,10) ((b(i,j),j=1,m),i=1,n) 10 format.
Вывод значений массива в виде таблицы в 5 столбцов
написал программу заполнения динамического массива случайными числами из интервала от -999 до 999.
Вывод массива структур на экран в виде таблицы
Хранение данных необходимо организовать в виде массива структур. В программе должны быть.
Источник
array_column
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
array_column — Возвращает массив из значений одного столбца входного массива
Описание
array_column() возвращает массив из значений столбца массива array с ключом column_key . Опционально можно указать index_key , чтобы индексировать возвращаемый массив значениями из столбца с ключом index_key входного массива.
Список параметров
Многомерный массив или массив объектов, из которого будет производиться выборка значений. Если задан массив объектов, то можно выбирать любые его общедоступные свойства. Для выборки закрытых или защищённых свойств, объект должен реализовывать магические методы __get() и __isset() .
Ключ столбца, значения которого нужно вернуть. Может содержать как числовой, так и строковый ключ для ассоциативных массивов. А также может принимать значение null , тогда возвращаются не значения определённого столбца, а весь массив (полезно использовать вместе с index_key , чтобы переиндексировать массив).
Ключ столбца, значения которого будут использоваться в качестве ключей возвращаемого массива. Может быть как целочисленным ключом, так и строковым. Тип значения приводится, как обычно для ключей массива (однако до PHP 8.0.0 объекты, поддерживающие преобразование к строке, также разрешены).
Возвращаемые значения
Возвращает массив из значений одного столбца входного массива (набора записей).
Список изменений
Версия | Описание |
---|---|
8.0.0 | Объекты в столбцах, обозначенные параметром index_key , больше не будут преобразованы в строку и вместо этого будут выдавать TypeError . |
Примеры
Пример #1 Получим столбец с именами из набора записей
// Массив, представляющий из себя набор записей, полученных из базы данных
$records = array(
array(
‘id’ => 2135 ,
‘first_name’ => ‘John’ ,
‘last_name’ => ‘Doe’ ,
),
array(
‘id’ => 3245 ,
‘first_name’ => ‘Sally’ ,
‘last_name’ => ‘Smith’ ,
),
array(
‘id’ => 5342 ,
‘first_name’ => ‘Jane’ ,
‘last_name’ => ‘Jones’ ,
),
array(
‘id’ => 5623 ,
‘first_name’ => ‘Peter’ ,
‘last_name’ => ‘Doe’ ,
)
);
$first_names = array_column ( $records , ‘first_name’ );
print_r ( $first_names );
?>
Результат выполнения данного примера:
Пример #2 Получим столбец с фамилиями, а в качестве ключей возвращаемого массива используем значения из столбца «id»
Результат выполнения данного примера:
Пример #3 Получим столбец имён пользователей из общедоступного свойства «username» объекта
class User
<
public $username ;
public function __construct ( string $username )
<
$this -> username = $username ;
>
>
$users = [
new User ( ‘user 1’ ),
new User ( ‘user 2’ ),
new User ( ‘user 3’ ),
];
print_r ( array_column ( $users , ‘username’ ));
?>
Результат выполнения данного примера:
Пример #4 Получим столбец имён пользователей из приватного свойства «name» объекта, используя магический метод __get() .
class Person
<
private $name ;
public function __construct ( string $name )
<
$this -> name = $name ;
>
public function __get ( $prop )
<
return $this -> $prop ;
>
public function __isset ( $prop ) : bool
<
return isset( $this -> $prop );
>
>
$people = [
new Person ( ‘Fred’ ),
new Person ( ‘Jane’ ),
new Person ( ‘John’ ),
];
print_r ( array_column ( $people , ‘name’ ));
?>
Результат выполнения данного примера:
User Contributed Notes 25 notes
if array_column does not exist the below solution will work.
return array_map(function($element) use($column_name)
You can also use array_map fucntion if you haven’t array_column().
$a = array(
array(
‘id’ => 2135,
‘first_name’ => ‘John’,
‘last_name’ => ‘Doe’,
),
array(
‘id’ => 3245,
‘first_name’ => ‘Sally’,
‘last_name’ => ‘Smith’,
)
);
This function does not preserve the original keys of the array (when not providing an index_key).
You can work around that like so:
// instead of
array_column ( $array , ‘column’ );
// to preserve keys
array_combine ( array_keys ( $array ), array_column ( $array , ‘column’ ));
?>
Because the function was not available in my version of PHP, I wrote my own version and extended it a little based on my needs.
When you give an $indexkey value of -1 it preserves the associated array key values.
$sample = array(
‘test1’ => array(
‘val1’ = 10,
‘val2’ = 100
),
‘test2’ => array(
‘val1’ = 20,
‘val2’ = 200
),
‘test3’ => array(
‘val1’ = 30,
‘val2’ = 300
)
);
function array_column_ext ( $array , $columnkey , $indexkey = null ) <
$result = array();
foreach ( $array as $subarray => $value ) <
if ( array_key_exists ( $columnkey , $value )) < $val = $array [ $subarray ][ $columnkey ]; >
else if ( $columnkey === null ) < $val = $value ; >
else
if ( $indexkey === null ) < $result [] = $val ; >
elseif ( $indexkey == — 1 || array_key_exists ( $indexkey , $value )) <
$result [( $indexkey == — 1 )? $subarray : $array [ $subarray ][ $indexkey ]] = $val ;
>
>
return $result ;
>
?>
Please note that if you use array_column to reset the index, when the index value is null, there will be different results in different PHP versions, examples
= [
[
‘name’ => ‘Bob’ ,
‘house’ => ‘big’ ,
],
[
‘name’ => ‘Alice’ ,
‘house’ => ‘small’ ,
],
[
‘name’ => ‘Jack’ ,
‘house’ => null ,
],
];
var_dump ( array_column ( $array , null , ‘house’ ));
On 5.6.30 , 7.0.0 , 7.2.0 ( not limited to ) get the following results
array( 3 ) <
[ «big» ]=>
array( 2 ) <
[ «name» ]=>
string ( 3 ) «Bob»
[ «house» ]=>
string ( 3 ) «big»
>
[ «small» ]=>
array( 2 ) <
[ «name» ]=>
string ( 5 ) «Alice»
[ «house» ]=>
string ( 5 ) «small»
>
[ 0 ]=>
array( 2 ) <
[ «name» ]=>
string ( 4 ) «Jack»
[ «house» ]=>
NULL
>
>
The new index , null will be converted to int , and can be incremented according to the previous index , that is , if Alice «house» is also null , then Alice ‘s new index is «0», Jack’ s new index is «1»
On 7.1.21 , 7.2.18 , 7.4.8 ( not limited to ) will get the following results
array( 3 ) <
[ «Big» ]=>
array( 2 ) <
[ «name» ]=>
string ( 3 ) «Bob»
[ «house» ]=>
string ( 3 ) «Big»
>
[ «small» ]=>
array( 2 ) <
[ «name» ]=>
string ( 5 ) «Alice»
[ «house» ]=>
string ( 5 ) «small»
>
[ «» ]=>
array( 2 ) <
[ «name» ]=>
string ( 4 ) «Jack»
[ «house» ]=>
NULL
>
>
The new index null will be converted to an empty string
Some remarks not included in the official documentation.
1) array_column does not support 1D arrays, in which case an empty array is returned.
2) The $column_key is zero-based.
3) If $column_key extends the valid index range an empty array is returned.
array_column implementation that works on multidimensional arrays (not just 2-dimensional):
function array_column_recursive (array $haystack , $needle ) <
$found = [];
array_walk_recursive ( $haystack , function( $value , $key ) use (& $found , $needle ) <
if ( $key == $needle )
$found [] = $value ;
>);
return $found ;
>
Taken from https : //github.com/NinoSkopac/array_column_recursive
Here’s a neat little snippet for filtering a set of records based on a the value of a column:
function dictionaryFilterList (array $source , array $data , string $column ) : array
<
$new = array_column ( $data , $column );
$keep = array_diff ( $new , $source );
return array_intersect_key ( $data , $keep );
>
$users = [
[ ‘first_name’ => ‘Jed’ , ‘last_name’ => ‘Lopez’ ],
[ ‘first_name’ => ‘Carlos’ , ‘last_name’ => ‘Granados’ ],
[ ‘first_name’ => ‘Dirty’ , ‘last_name’ => ‘Diana’ ],
[ ‘first_name’ => ‘John’ , ‘last_name’ => ‘Williams’ ],
[ ‘first_name’ => ‘Betty’ , ‘last_name’ => ‘Boop’ ],
[ ‘first_name’ => ‘Dan’ , ‘last_name’ => ‘Daniels’ ],
[ ‘first_name’ => ‘Britt’ , ‘last_name’ => ‘Anderson’ ],
[ ‘first_name’ => ‘Will’ , ‘last_name’ => ‘Smith’ ],
[ ‘first_name’ => ‘Magic’ , ‘last_name’ => ‘Johnson’ ],
];
var_dump ( dictionaryFilterList ([ ‘Dirty’ , ‘Dan’ ], $users , ‘first_name’ ));
// Outputs:
[
[ ‘first_name’ => ‘Jed’ , ‘last_name’ => ‘Lopez’ ],
[ ‘first_name’ => ‘Carlos’ , ‘last_name’ => ‘Granados’ ],
[ ‘first_name’ => ‘John’ , ‘last_name’ => ‘Williams’ ],
[ ‘first_name’ => ‘Betty’ , ‘last_name’ => ‘Boop’ ],
[ ‘first_name’ => ‘Britt’ , ‘last_name’ => ‘Anderson’ ],
[ ‘first_name’ => ‘Will’ , ‘last_name’ => ‘Smith’ ],
[ ‘first_name’ => ‘Magic’ , ‘last_name’ => ‘Johnson’ ]
]
I added a little more functionality to the more popular answers here to support the $index_key parameter for PHP // for php if (! function_exists ( ‘array_column’ )) <
function array_column ( $input , $column_key , $index_key = null ) <
$arr = array_map (function( $d ) use ( $column_key , $index_key ) <
if (!isset( $d [ $column_key ])) <
return null ;
>
if ( $index_key !== null ) <
return array( $d [ $index_key ] => $d [ $column_key ]);
>
return $d [ $column_key ];
>, $input );
if ( $index_key !== null ) <
$tmp = array();
foreach ( $arr as $ar ) <
$tmp [ key ( $ar )] = current ( $ar );
>
$arr = $tmp ;
>
return $arr ;
>
>
?>
array_column() will return duplicate values.
Instead of having to use array_unique(), use the $index_key as a hack.
**Caution: This may get messy when setting the $column_key and/or $index_key as integers.**
= [
[ ‘id’ => 2135 , ‘first_name’ => ‘John’ ],
[ ‘id’ => 3245 , ‘first_name’ => ‘Sally’ ],
[ ‘id’ => 5342 , ‘first_name’ => ‘Jane’ ],
[ ‘id’ => 5623 , ‘first_name’ => ‘Peter’ ],
[ ‘id’ => 6982 , ‘first_name’ => ‘Sally’ ]
];
print_r ( array_unique ( array_column ( $records , ‘first_name’ )));
// Force uniqueness by making the key the value.
print_r ( array_column ( $records , ‘first_name’ , ‘first_name’ ));
print_r ( array_column ( $records , ‘id’ , ‘first_name’ ));
Array
(
[John] => John
[Sally] => Sally
[Jane] => Jane
[Peter] => Peter
)
Array
(
[John] => 2135
[Sally] => 6982
[Jane] => 5342
[Peter] => 5623
)
Note that this function will return the last entry when possible keys are duplicated.
var_dump ( array_column ( $array , $value = 0 , $index = 1 ));
var_dump ( array_column ( $array , $value = 0 , $index = 2 ));
array (size=2)
‘one’ => string ‘1-1’ (length=3)
‘two’ => string ‘1-2’ (length=3)
array (size=1)
‘one’ => string ‘1-2’ (length=3)
If you need to extract more than one column from an array, you can use array_intersect_key on each element, like so:
function array_column_multi(array $input, array $column_keys) <
$result = array();
$column_keys = array_flip($column_keys);
foreach($input as $key => $el) <
$result[$key] = array_intersect_key($el, $column_keys);
>
return $result;
>
Please note this function accepts 2D-arrays ONLY, and silently returns empty array when non-array argument is provided.
Code:
class testObject <
public $a = 123;
>
$testArray = [new testObject(), new testObject(), new testObject()];
$result = array_column($testArray, ‘a’)); //array(0)
If array_column is not available you can use the following function, which also has the $index_key parameter:
if (!function_exists(‘array_column’)) <
function array_column($array, $column_key, $index_key = null)
<
return array_reduce($array, function ($result, $item) use ($column_key, $index_key)
<
if (null === $index_key) <
$result[] = $item[$column_key];
> else <
$result[$item[$index_key]] = $item[$column_key];
>
a simple solution:
function arrayColumn(array $array, $column_key, $index_key=null) <
if(function_exists(‘array_column ‘)) <
return array_column($array, $column_key, $index_key);
>
$result = [];
foreach($array as $arr) <
if(!is_array($arr)) continue;
if(is_null($column_key)) <
$value = $arr;
>else <
$value = $arr[$column_key];
>
if(!is_null($index_key)) <
$key = $arr[$index_key];
$result[$key] = $value;
>else <
$result[] = $value;
>
Another option for older PHP versions (pre 5.5.0) is to use array_walk():
= array(
array( ‘some’ => ‘var’ , ‘foo’ => ‘bar’ ),
array( ‘some’ => ‘var’ , ‘foo’ => ‘bar’ ),
array( ‘some’ => ‘var’ , ‘foo’ => ‘bar’ )
);
This didn’t work for me recursively and needed to come up with a solution.
Here’s my solution to the function:
if ( ! function_exists( ‘array_column_recursive’ ) ) <
/**
* Returns the values recursively from columns of the input array, identified by
* the $columnKey.
*
* Optionally, you may provide an $indexKey to index the values in the returned
* array by the values from the $indexKey column in the input array.
*
* @param array $input A multi-dimensional array (record set) from which to pull
* a column of values.
* @param mixed $columnKey The column of values to return. This value may be the
* integer key of the column you wish to retrieve, or it
* may be the string key name for an associative array.
* @param mixed $indexKey (Optional.) The column to use as the index/keys for
* the returned array. This value may be the integer key
* of the column, or it may be the string key name.
*
* @return array
*/
function array_column_recursive( $input = NULL, $columnKey = NULL, $indexKey = NULL ) <
// Using func_get_args() in order to check for proper number of
// parameters and trigger errors exactly as the built-in array_column()
// does in PHP 5.5.
$argc = func_num_args();
$params = func_get_args();
if ( $argc
Retrieve multiple columns from an array:
$columns_wanted = array(‘foo’,’bar’);
$array = array(‘foo’=>1,’bar’=>2,’foobar’=>3);
if (! function_exists ( ‘array_column’ )) <
function array_column ( $input , $column_key , $index_key = NULL ) <
if (! is_array ( $input )) <
trigger_error ( __FUNCTION__ . ‘() expects parameter 1 to be array, ‘ . gettype ( $input ) . ‘ given’ , E_USER_WARNING );
return FALSE ;
>
$ret = array();
foreach ( $input as $k => $v ) <
$value = NULL ;
if ( $column_key === NULL ) <
$value = $v ;
>
else <
$value = $v [ $column_key ];
>
if ( $index_key === NULL || !isset( $v [ $index_key ])) <
$ret [] = $value ;
>
else <
$ret [ $v [ $index_key ]] = $value ;
>
>
Presented function is good when You want to flatten nested array base on only one column, but if You want to flatten whole array You can use this method:
/**
* Method that transforms nested array into the flat one in below showed way:
* [
* [
* [0]=>’today’,
* ],
* [
* [0]=>’is’,
* [1]=>’very’,
* [2]=> [
* [0]=>’warm’
* ],
* ],
* ]
*
* Into:
*
* [‘today’,’is’,’very’,’warm’]
*
* @param $input
* @return array
*/
private function transformNestedArrayToFlatArray($input)
<
$output_array = [];
if (is_array($input)) <
foreach ($input as $value) <
if (is_array($value)) <
$output_array = array_merge($output_array, $this->transformNestedArrayToFlatArray($value));
> else <
array_push($output_array, $value);
>
>
> else <
array_push($output_array, $input);
>
Источник