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 :: Переборка массива

 PHP.SU

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


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

> Без описания
etoYA
Отправлено: 02 Декабря, 2011 - 07:58:00
Post Id



Участник


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


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




Сейчас парюсь, пробую написать скрипт переборки массива, но что-то не получается...

Подкиньте идейку(пока не код). Допустим массив содержит 15 строк, нужно разделить это кол-во строк на 3 и вывести в 3 разных блокахУлыбка).
(Добавление)
P.S пока получилось вывести:

1
2
3
4
5

1
2
...........
10

1
2
...........
15
 
 Top
EuGen Администратор
Отправлено: 02 Декабря, 2011 - 08:01:40
Post Id


Профессионал


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


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






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Декабря, 2011 - 08:15:07
Post Id



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


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


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




Если вопрос относится к этой: http://forum.php.su/topic.php?fo...03643#1322803643 теме из раздела хтмл, как вывести в блоке три колонки, то никаких чанков не нужно.
Идея:
 
 Top
EuGen Администратор
Отправлено: 02 Декабря, 2011 - 08:26:42
Post Id


Профессионал


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


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




DeepVarvar пишет:
if ($i%3 == 0) ...

Идея

Но, может, проблема все же именно в разбиении, а не выводе.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Самогонщик
Отправлено: 02 Декабря, 2011 - 08:37:14
Post Id



Посетитель


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


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




EuGen пишет:
if(!$i%3)
Это сильно сурово, в том смысле что читать в итоге будет неудобно.
 
 Top
EuGen Администратор
Отправлено: 02 Декабря, 2011 - 08:39:03
Post Id


Профессионал


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


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




Чем же неудобно? Всего лишь два оператора. Довольно часто такие конструкции используются, никогда не замечал неудобств ни в своем, ни в чужом коде.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
etoYA
Отправлено: 02 Декабря, 2011 - 08:46:42
Post Id



Участник


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


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




что-то не догоняю Ниндзя
 
 Top
Самогонщик
Отправлено: 02 Декабря, 2011 - 08:52:07
Post Id



Посетитель


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


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




EuGen пишет:
Чем же неудобно?
Выглядит как набор спецсимволов, на вкус и цвет... но такой паттерн ($i%3 == 0) даже внимания не задерживает, точно понятно что хотел сказать автор.
 
 Top
EuGen Администратор
Отправлено: 02 Декабря, 2011 - 08:52:33
Post Id


Профессионал


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


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




etoYA пишет:
что-то не

Может, тогда и правда неудобно.
Есть два варианта. Если Вам нужно разбить массив, то делаете это с помощью array_chunk, получая требуемое разбиение.
Если же задача просто в выводе, то достаточно:
PHP:
скопировать код в буфер обмена
  1. $rgData=array(
  2. 'string_0',
  3. 'string_1',
  4. 'string_2',
  5. 'string_3',
  6. 'string_4',
  7. 'string_5',
  8. 'string_6',
  9. 'string_7',
  10. 'string_8',
  11. 'string_9');
  12. for($i=1; $i<=count($rgData);$i++)
  13. {
  14.    echo($rgData[$i-1].($i%3?" ":"\n"));
  15. }


Самогонщик пишет:
но такой паттерн ($i%3 == 0) даже внимания не задерживает

Может, это уже привычка, или опыт прочтения/изучения кода, но то выражение, что я привел, тоже ничуть не задерживает моего внимания. Ну да ладно, действительно - на вкус и цвет.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Panoptik
Отправлено: 02 Декабря, 2011 - 08:58:01
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




элементарно Ватсон!

PHP:
скопировать код в буфер обмена
  1.  
  2. // ($i%3 == 0) == (!$i%3)
  3. var $arr =  (0,1,6,5,9,7,8,1,3,1,2,3,1,2,4,5);
  4. print "<div>";
  5. for($i=0;$i<count($arr);$i++) {
  6.   if(!$i%3 || !$i) {
  7.    echo $arr[$i];
  8.   } else {
  9.    print "</div><div>";
  10.    echo $arr[$i];
  11.   }
  12. }
  13. print "</div>";
  14.  
  15.  


-----
Just do it
 
 Top
etoYA
Отправлено: 02 Декабря, 2011 - 09:00:17
Post Id



Участник


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


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




Что-то не понял, делал я с чанком, но у меня не получилось вывести все в 3 блока, если не известно кол-во строк в массиве. Могу вывести по * строк на блок, но сколько будет блоков.......

В общем мне нужно все строки массива вывести в 3 блока.
 
 Top
EuGen Администратор
Отправлено: 02 Декабря, 2011 - 09:02:57
Post Id


Профессионал


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


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




Вот Вам выше уже привели два варианта. Мой - на "подумать" (как Вы и просили) - как его модифицировать, чтобы форматирование нужное было (по сути столбцы в моем примере разделены пробелами, строки - переносами строк)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
etoYA
Отправлено: 02 Декабря, 2011 - 09:06:29
Post Id



Участник


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


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




Вот мой вариант, но как и говорит, в нем эта проблема... Выводит по 3 строки в строку...
PHP:
скопировать код в буфер обмена
  1. <?
  2. $array[] = '01. blablablabla<br/>';
  3. $array[] = '02. blablablabla<br/>';
  4. $array[] = '03. blablablabla<br/>';
  5. $array[] = '04. blablablabla<br/>';
  6. $array[] = '05. blablablabla<br/>';
  7. $array[] = '06. blablablabla<br/>';
  8. $array[] = '07. blablablabla<br/>';
  9. $array[] = '08. blablablabla<br/>';
  10. $array[] = '09. blablablabla<br/>';
  11. $array[] = '10. blablablabla<br/>';
  12. $array[] = '11. blablablabla<br/>';
  13. $array[] = '12. blablablabla<br/>';
  14. $array[] = '13. blablablabla<br/>';
  15. $array[] = '14. blablablabla<br/>';
  16. $array[] = '15. blablablabla<br/>';
  17. $arr = (array_chunk($array, 3));
  18. for($i=0; $i < count($arr); $i++) {
  19.     for($x=0; $x < count($arr[$i]); $x++) {
  20.         echo $arr[$i][$x];    
  21.     }
  22.     echo '</br>';
  23. }
  24. ?>
 
 Top
Panoptik
Отправлено: 02 Декабря, 2011 - 09:07:32
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




вот с чанком:
PHP:
скопировать код в буфер обмена
  1.  
  2. var $arr =  (0,1,6,5,9,7,8,1,3,1,2,3,1,2,4,5);
  3. var $newarr = array_chunk($arr,3);
  4. foreach($newarr as $val) {
  5.  print "<block>";
  6.   foreach($val as $subval) {
  7.     print $subval;
  8.   }
  9.  print "</block>";
  10. }
  11.  


-----
Just do it
 
 Top
etoYA
Отправлено: 02 Декабря, 2011 - 09:10:24
Post Id



Участник


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


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




Panoptik, у меня написано немного подругому, но эффект тот же... Выводит по 3 строки в 1блок, а не все строки разделить на 3, и эти части вевести в каждый блок...
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB