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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод массива в 4 столбика

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
mixalic
Отправлено: 20 Октября, 2011 - 19:37:04
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Июль 2011  
Откуда: Воскресенск


Помог: 0 раз(а)




Выделено в отдельную тему из темы "foreach и html"
Ребят помогите вывести ассоциативный массив в 4 столбика, вида:

1 4 7 10
2 5 8 11
3 6 9 12


Что уже написал:
массив 256 значений, вида:
PHP:
скопировать код в буфер обмена
  1.  
  2. $char["0"] = 0x30;
  3. $char["1"] = 0x31;
  4. $char["2"] = 0x32;
  5. $char["3"] = 0x33;
  6. $char["4"] = 0x34;
  7. $char["5"] = 0x35;
  8. $char["6"] = 0x36;
  9. $char["7"] = 0x37;
  10. $char["8"] = 0x38;
  11. $char["9"] = 0x39;
  12. $char["A"] = 0x41;
  13. $char["B"] = 0x42;
  14. $char["C"] = 0x43;
  15. $char["D"] = 0x44;
  16. . . .
  17.  


и код который его выводит:

PHP:
скопировать код в буфер обмена
  1. <table id="ascii">
  2.   <tr><td><b>Символ</b></td><td><b>hex</b></td></tr>
  3.     <?PHP
  4.      foreach ($char as $chr => $hex) {
  5.        echo "<tr><td>".$chr."</td>";
  6.        echo "<td>".strtoupper(dechex($hex))."</td></tr>";
  7.     }
  8.    ?>
  9. </table>
 
 Top
DeepVarvar Супермодератор
Отправлено: 20 Октября, 2011 - 20:09:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Перенесено из темы "foreach и html"
Да тут удобнее выводить будет не ячейками таблицы а дивами с float: left;

Куда сообщуха пропала??? Не понял

(Отредактировано автором: 20 Октября, 2011 - 21:04:03)

 
 Top
mixalic
Отправлено: 20 Октября, 2011 - 20:41:54
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Июль 2011  
Откуда: Воскресенск


Помог: 0 раз(а)




Перенесено из темы "foreach и html"
чет я здесь вроде сообщение писал, а оно куда-то того... херакс! и исчезло, так бывает?
(Добавление)
DeepVarvar пишет:
Да тут удобнее выводить будет не ячейками таблицы а дивами с float: left;

Куда сообщуха пропала??? Не понял


и я тут недоумеваю тоже... блин
 
 Top
DeepVarvar Супермодератор
Отправлено: 20 Октября, 2011 - 21:14:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Дивами и float: left;
 
 Top
mixalic
Отправлено: 20 Октября, 2011 - 21:17:14
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Июль 2011  
Откуда: Воскресенск


Помог: 0 раз(а)




DeepVarvar пишет:
Дивами и float: left;

ну а как эти дивы прерывать чтобы доходило до 64 строчки в столбце и на новую скакало?
 
 Top
DeepVarvar Супермодератор
Отправлено: 20 Октября, 2011 - 21:28:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Почему 64?
Надо же разбить любое кол-во на 4 ряда?
$cols = ceil(count($arr)/4);
 
 Top
mixalic
Отправлено: 20 Октября, 2011 - 21:36:05
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Июль 2011  
Откуда: Воскресенск


Помог: 0 раз(а)




DeepVarvar пишет:
Почему 64?
Надо же разбить любое кол-во на 4 ряда?
$cols = ceil(count($arr)/4);


не, количество известно и строго фиксировано 256 элементов, проблема в том, что у меня не получается вывести этот массив в 4 столбца вида:
1 5
2 6
3 7
4 8 и т.д.

не пойму как столбец на нужном элементе прервать и продолжить с нового столбца выводить. понимию что нужно if там где-то вставить, но где именно и как он будет столбец прерывать не вкурю(
 
 Top
p1us
Отправлено: 21 Октября, 2011 - 07:24:45
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




вы сами написали 4 строки...

а вот столбцы
1 65 129 193
2 66 130 194
3 67 131 195...в общем то и так далее
закономерность ясна, значит строки можете задать..но это в том случае что у Вас известно количество столбцов и равно 256

(Отредактировано автором: 21 Октября, 2011 - 07:25:28)

 
 Top
LIME
Отправлено: 21 Октября, 2011 - 08:30:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




mixalic пишет:
ну а как эти дивы прерывать чтобы доходило до 64 строчки в столбце и на новую скакало?
не понял видимо
вот набросал примерно
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $i=0;
  3. foreach ($char as $chr => $hex) {
  4.         if ($i==0) echo '<div style="float:left">';
  5.         echo '<div>'.$chr.'-'.strtoupper(dechex($hex)).'</div>';
  6.         if ($i==63) {
  7.                 echo '</div>';
  8.                 $i=-1;
  9.         }
  10.         $i++;
  11. }
  12. ?>
  13.  

в общих чертах каждый столбец в диве у которого флоат стоит
(Добавление)
а если надо обязательно таблицей выводить то поменяйте местами в массиве ключи со значениями тогда вывод будет в цикле от 30 до 94 (64 итерации)
PHP:
скопировать код в буфер обмена
  1. echo '<tr><td>'.$arr[$i].'</td><td>'.$arr[$i+64].'</td><td>'.$arr[$i+128]....'</tr>';

(Отредактировано автором: 21 Октября, 2011 - 08:41:35)

 
 Top
Самогонщик
Отправлено: 21 Октября, 2011 - 20:41:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




Чисто от того что мне скучно, вот готовый код по предложенному LIME второму способу:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  $char = array();
  3.  for($i=0; $i<256; $i++)
  4.    $char[$i]=256-$i;
  5. ?>
  6.  
  7. <table id="ascii">
  8.   <tr><td><b>1</b></td><td><b>2</b></td><td><b>3</b></td><td><b>4</b></td></tr>
  9.     <?PHP
  10.     for($i=0; $i<64; $i++) {
  11.       echo '<tr><td>'.$char[$i].'</td><td>'.$char[$i+64].'</td><td>'.$char[$i+128].'</td><td>'.$char[$i+192].'</tr>';
  12.    }
  13.   ?>
  14. </table>


Прогнать можно на кодепаде
 
 Top
Давит
Отправлено: 22 Октября, 2011 - 01:28:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Май 2011  


Помог: 2 раз(а)




функция GetArrayS принимает масив, и число (количество столбиц)

PHP:
скопировать код в буфер обмена
  1. function GetArrayS ($array, $strnum){
  2.                 if ($strnum == 0) return;
  3.                 $count = ceil(count($array)/$strnum);
  4.                 $num = 0;
  5.                
  6.                 foreach($array as $k => $v){
  7.                         if ($num == $count) $num = 0;
  8.                                 $arr[$num][$k] = $v;
  9.                         $num++;
  10.                 }
  11.                 return $arr;
  12. }


Спойлер (Отобразить)

PHP:
скопировать код в буфер обмена
  1. //визиваем функцию и вводим на екран
  2. $arr = GetArrayS($array, 3);
  3. echo '<table>';
  4. foreach($arr as $k=>$v){
  5.         echo '<tr>';   
  6.                 foreach($arr[$k] as $k1=>$v1){
  7.                          echo "<td>".$arr[$k][$v1]."</td>";
  8.                         }
  9.                
  10.         echo '</tr>';          
  11.         }
  12. echo '</table>';


так думаю акуратно

(Отредактировано автором: 22 Октября, 2011 - 01:36:38)

 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Октября, 2011 - 07:53:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Давит пишет:
так думаю акуратно
tabstop(tabwidth) = 8!!! Закатив глазки
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB