Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вывод массива в таблицу
Форумы портала PHP.SU » » Вопросы новичков » Вывод массива в таблицу

Страниц (2): [1] 2 »
 

1. nkl - 05 Января, 2012 - 19:12:31 - перейти к сообщению
Ребята, помогите, срочно!

Я в общем-то не нубло в ПХП, полгода назад дипломку на нем защищал. Но за полгода геморра на месте "сисадмина" из головы напроч все по вылетало, зараз! Сейчас, прошел собеседование на новой работе по этому php и мне дали ТЗ. Начал писать и...
В общем-то, я потихоньку вспоминаю, но ниак не могу вдуплить как вывести двумерный массив в html-таблицу. Что интересно, в дипломной работе этих выводов было с десяток, только её сейчас долго искать, а времени а в обрез.

Смысл вывода массива в таблицу мне понятен. Нужно делать двойной цикл. Первый цикл считает строки, а второй - столбцы. Это мне кажется сейчас и дети знают.

PHP:
скопировать код в буфер обмена
  1. $mass[i][j]
  2. echo "<table>";
  3. for ($i=0; $i<=count($mass); $i++)
  4. {
  5.         echo "<tr>";
  6.         for ($j=0; $j<=***; $j++);
  7.         {
  8.                 echo "<td>".$mass[i][j]."</td>";
  9.         }
  10.         echo "</tr>";
  11. }
  12. echo "</table>";
  13.  

Как указать циклу, что достигнут конец строки массива? Что нужно вписать вместо ***. Не могу найти, функцию. Если её нет, то подскажите как сделать. Заранее спасибо.
2. snikers987 - 05 Января, 2012 - 19:17:17 - перейти к сообщению
foreach()

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $rgData = array(
  4.                         array(1,2,3,4,5),
  5.                         array(6,7,8,9,10)
  6.                                 );
  7. echo "<table>";
  8. foreach ($rgData as $rgArr){
  9.         echo "<tr>";
  10.         foreach ($rgArr as $sValue){
  11.                 echo "<td>{$sValue}</td>";
  12.         }
  13.         echo "</tr>";
  14. }
  15. echo "</table>";
  16.  


А как работать собираетесь?)
3. nkl - 05 Января, 2012 - 19:28:51 - перейти к сообщению
Как foreach выводит одномерный массив описано тысячу ряз в гугле, а вот какпри помощи этой функции узнать, что выведен последний столбец двумерного массива - мне совершенно не понятно. Можно по подробнее?
4. snikers987 - 05 Января, 2012 - 19:35:04 - перейти к сообщению
Пример выше не понятен?
5. nkl - 05 Января, 2012 - 19:40:48 - перейти к сообщению
Прошу прощения, видимо слишком рано обновил страницу. Когда я написал сообщение, в вашем посте было только
Цитата:
foreach()

Ну я и полез в гугл искать. Работать собираюсь обыкновенно. Главное не знание синтаксиса, а понимание принципов программирования имхо. Думаю уже через недельку я на php буду шпрехать не хуже вашего Подмигивание
6. Самогонщик - 05 Января, 2012 - 19:47:40 - перейти к сообщению
nkl пишет:
что выведен последний столбец двумерного массива - мне совершенно не понятно.
Как из цикла вышли, так и вывели выходит. Я правильно ответил?
7. Panoptik - 05 Января, 2012 - 20:06:55 - перейти к сообщению
и никто не написал что вместо *** нужно было подставить всего лишь count($mass[$i])
8. Самогонщик - 05 Января, 2012 - 20:10:07 - перейти к сообщению
Это было бы слишком просто
9. snikers987 - 05 Января, 2012 - 20:13:10 - перейти к сообщению
Panoptik пишет:
и никто не написал что вместо *** нужно было подставить всего лишь count($mass[$i])


Для ассоциативного массива не пойдет, foreach() универсальнее, имхо
10. Panoptik - 05 Января, 2012 - 20:15:16 - перейти к сообщению

мне вот эта тема с ответами напоминает классическую одесскую историю. "А вы не подскажите? - Подскажу, но зачем вам это? Купите лучше помидоры " Радость
11. snikers987 - 05 Января, 2012 - 20:18:28 - перейти к сообщению
Panoptik пишет:

мне вот эта тема с ответами напоминает классическую одесскую историю. "А вы не подскажите? - Подскажу, но зачем вам это? Купите лучше помидоры " Радость

Возьми с полки пряник
12. nkl - 05 Января, 2012 - 20:26:44 - перейти к сообщению
Цитата:
и никто не написал что вместо *** нужно было подставить всего лишь count($mass[$i])

Гениально! Единственный пост, который вправил мой мозг. А тот тут сразу в foreach полезли и т.д. и т.п..
Самогонщик, если бы я сидел на подобных форумах целыми днями и коддил проекты по ходу дела, то для меня это тоже показалось бы слишком простым...
Panoptik, а я вот не понимаю, почему, когда за помощью обращается человек с меньшим багажом знаний, чем у окружающих, все тут же начинают умничать и совершенно не вдупляют, разницы между своим уровнем осведомленности в данной области и человеком, который задает вопрос?
В общем-то, все равно спасибо, если бы не вы, я бы так и лазил по гуглам вытаращив глаза.
Тему можно закрывать
13. Самогонщик - 05 Января, 2012 - 20:29:52 - перейти к сообщению
nkl пишет:
если бы я сидел на подобных форумах целыми днями и коддил проекты по ходу дела, то для меня это тоже показалось бы слишком простым...
А я не говорил что это слишком просто. Более того, как выяснилось я не правильно понял вопрос Улыбка меня сбил с толку уже готовый ответ.

А по поводу умниченья, тебя никто не оскорблял, ответ дали, значит можно развлекаться Улыбка
14. snikers987 - 05 Января, 2012 - 20:39:39 - перейти к сообщению
Я так и не понял чем foreach() не устроил, имхо зачем плодить в памяти $i, $j ?
Почему не использовать для работы с массивом цикл , который специально и предназначен для массивов..

UPD

Порой людям нужно давать то что им нужно, а не то что просят..
15. Panoptik - 05 Января, 2012 - 20:43:21 - перейти к сообщению
snikers987 потому что человек еще не знаком с оператором foreach, а только с for...
по себе знаю, что использовать незнакомые, пускай и более удобные инструменты использовать гораздо сложнее. вот человек потренируется просветлеет и начнет юзать foreach =) я тоже не сразу понял как он работает, но когда вкурил, то мне это очень понравилось.
и на счет примера с for'ами. автор если используете count то ставьте просто знак меньше (<) а не меньше или равно (<=) у вас будут проходить по одной лишней итерации

 

Powered by ExBB FM 1.0 RC1