Как вывести данные из массива в таблицу?

serega200606

Новичок
Имеется массив, который при выводе print_r($result); дает результат, приведенный ниже.
Как вывести все эти данные из массива в виде html таблицы если заранее не известно количество записей? В интернете похожих примеров не нашел - не могу сам разобраться. Подскажите, пожалуйста

Array
(
[result] => 1
[message] => Array
(
[0] => Array
(
[providerId] => 1
[actionDate] => 1322514017
[state] => 1
[firstName] => Имя
[lastName] => Фамилия
[middleName] => Отчество
[phone] => 380000000000
=> [email protected]
[commission] => 3
[amount] => 3
[paymentId] => 454
[shopName] =>
[uid] =>
[description] => description
[inviteCode] =>
)

[1] => Array
(
[providerId] => 58
[actionDate] => 1322863854
[state] => 1
[firstName] => Имя
[lastName] => Фамилия
[middleName] => Отчество
[phone] => 380000000000
[email] => [email protected]
[commission] => 5
[amount] => 99
[paymentId] => 674
[shopName] =>
[uid] =>
[description] => description
[inviteCode] => 000
)

[2] => Array
(
[providerId] => 58
[actionDate] => 1323088060
[state] => 1
[firstName] => Имя
[lastName] => Фамилия
[middleName] => Отчество
[phone] => 380000000000
[email] => [email protected]
[commission] => 5
[amount] => 99
[paymentId] => 776
[shopName] =>
[uid] =>
[description] => description
[inviteCode] => 111
)

)

)
 

serega200606

Новичок
Всем спасибо :)

echo '<table cellpadding="5" cellspacing="0" border="1">';
foreach ($result['message'] as $key => $value) {
echo "<tr><td>".$value['providerId']."</td><td>".$value['actionDate']."</td><td>".$value['state']."</td><td>".$value['firstName']."</td><td>".$value['lastName']."</td><td>".$value['middleName']."</td><td>".$value['phone']."</td>
<td>".$value['email']."</td><td>".$value['commission']."</td><td>".$value['amount']."</td><td>".$value['paymentId']."</td><td>".$value['shopName']."</td>
<td>".$value['uid']."</td><td>".$value['description']."</td><td>".$value['inviteCode']."</td></tr>";

}
echo "</table>";
 

SkyLine

Новичок
Всем спасибо :)

echo '<table cellpadding="5" cellspacing="0" border="1">';
foreach ($result['message'] as $key => $value) {
echo "<tr><td>".$value['providerId']."</td><td>".$value['actionDate']."</td><td>".$value['state']."</td><td>".$value['firstName']."</td><td>".$value['lastName']."</td><td>".$value['middleName']."</td><td>".$value['phone']."</td>
<td>".$value['email']."</td><td>".$value['commission']."</td><td>".$value['amount']."</td><td>".$value['paymentId']."</td><td>".$value['shopName']."</td>
<td>".$value['uid']."</td><td>".$value['description']."</td><td>".$value['inviteCode']."</td></tr>";

}
echo "</table>";
Внутри можно добавить еще один foreach и не нужно будет руками выводить столько инфы
 

SkyLine

Новичок
PHP:
echo '<table cellpadding="5" cellspacing="0" border="1">';
foreach ($result['message'] as $key => $value) {
	echo "<tr>";
	foreach ($value as $data)
		echo "<td>".$data."</td>";
	echo "</tr>";
}
echo "</table>";
 

serega200606

Новичок
PHP:
echo '<table cellpadding="5" cellspacing="0" border="1">';
foreach ($result['message'] as $key => $value) {
	echo "<tr>";
	foreach ($value as $data)
		echo "<td>".$data."</td>";
	echo "</tr>";
}
echo "</table>";
Мне просто нужно еще и обрабатывать некоторые поля определенным образом, а не только вывести все в таблицу, поэтому лучше руками. Но все равно спасибо за совет - пригодится :)
 

Adelf

Administrator
Команда форума
serega200606
не слушай плохих советов.

SkyLine
Не давай плохих советов. Бороться за сокращение кода в ущерб его читабельности и логичности - путь к говнокоду.
 

SkyLine

Новичок
SkyLine
Не давай плохих советов. Бороться за сокращение кода в ущерб его читабельности и логичности - путь к говнокоду.
Если данные выбраны, обработаны и подготовлены к выводу в таблицу, то гораздо логичнее вывести их в цикле, чем писать пару десятков кусков типа "<td>$data</td>"...
 

Adelf

Administrator
Команда форума
SkyLine
Если бы они были подготовлены к выводу, то индексы были бы не строковые, а числовые 0, 1.
Несмотря на то, что в PHP массивах все-таки есть порядок и для строковых ключей, все равно крайне некрасиво выводить данные по строковым ключам через обычный foreach. Это выглядит нелогично и, имхо, запутает читающего код.
 

SkyLine

Новичок
SkyLine
Если бы они были подготовлены к выводу, то индексы были бы не строковые, а числовые 0, 1.
Несмотря на то, что в PHP массивах все-таки есть порядок и для строковых ключей, все равно крайне некрасиво выводить данные по строковым ключам через обычный foreach. Это выглядит нелогично и, имхо, запутает читающего код.
Обычный foreach в общем-то и предназначен для перебора элементов ассоциативного массива. Другого способа получить элементы, кроме как обращаться на прямую по индексу, в таком массиве нет. И если есть такой массив, с парой десятков элементов, то лучше перебрать их в цикле и вывести, чем вручную писать вывод каждого элемента.
А если такой массив формируется "на лету" и заведомо неизвестно сколько столбцов будет и какие? Или данные берутся из разных запросов, то для каждого писать свой набор элементов для вывода в таблицу?

Только если с данными нужно делать какие-то особые преобразования или если каждому элементу массива не выделена отдельная ячейка, писать руками вывод - лишняя трата времени.

P.S. Я не говорю, что так нужно делать всегда. Нет. Но и вообще отказываться от такого варианта считаю не логичным.
 
Сверху