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

 PHP.SU

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


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

> Без описания
Panoptik
Отправлено: 02 Декабря, 2011 - 09:12:34
Post Id



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


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


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




вам нужно отформатировать блок, а не массив. смотря в каком виде вы хотите вывести результат. используйте цсс, либо таблицы
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. var $arr =  (0,1,6,5,9,7,8,1,3,1,2,3,1,2,4,5);
  4. var $newarr = array_chunk($arr,3);
  5. print "<table><tr>";
  6. foreach($newarr as $val) {
  7.  print "<td>";
  8.   foreach($val as $subval) {
  9.     print $subval."<br />";
  10.   }
  11.  print "</td>";
  12. }
  13. print "</table></tr>";
  14.  


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



Участник


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


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




А вариант EuGena, выводит все в 1 строку
 
 Top
Panoptik
Отправлено: 02 Декабря, 2011 - 09:16:55
Post Id



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


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


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




да array_chunk не подойдет. не дочитал немного, но конструкцию (!$i%3) никто не отменял


-----
Just do it
 
 Top
EuGen Администратор
Отправлено: 02 Декабря, 2011 - 09:17:24
Post Id


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


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


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




Нет. Это браузер так отображает (для него ведь и перенос строки, и пробел - все "пробел в отображении"). Если заглянете в исходный код, увидите, как оно на самом деле.

Ну ладно, похоже, дело не идет. Вероятно, это поможет:
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. $rgResult = array();
  13. $iLength  = 3;
  14. array_walk($rgData, function($value, $key) use (&$rgResult, $iLength)
  15. {
  16.    $rgResult[$key%$iLength][]=$value;
  17. });
  18. array_walk($rgResult, function($rgValue)
  19. {
  20.    echo("<div>".join("\n", $rgValue)."</div>");
  21. });


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



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


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


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $arr =  array(0,1,6,5,9,7,8,1,3,1,2,3,1,2,4,5);
  3. print "<table><tr>";
  4. for($i = 0 ; $i < count($arr) ; $i++) {
  5.  if($i%3 == 0 && $i != 0) {
  6.     print "</tr><tr>";
  7.  }
  8.  print "<td>".$arr[$i-1]."</td>";
  9. }
  10. print "</tr></table>";
  11. ?>


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



Участник


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


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




Всем спасибо! EuGen, то что надо, непонятноеНедовольство, огорчение, но работает как надо Хорошо
(Добавление)
А нет, стоп, работает так же как и мой...
Panoptik, вот что-то похожее, но вот как выводит.

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.               string_0  string_1
  3. string_2        string_3        string_4
  4. string_5        string_6        string_7
  5. string_8        string_9        string_10
  6. string_11       string_12       string_13
  7.  

А хотелось бы, чтобы:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. string_0     string_5     string_10
  3. string_1     string_6     string_11
  4. string_2     string_7     string_12
  5. string_3     string_8     string_13
  6. string_4     string_9     string_14
  7.  
 
 Top
EuGen Администратор
Отправлено: 02 Декабря, 2011 - 09:33:23
Post Id


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


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


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




etoYA
Значит, Вы неправильно или неточно ставите задачу. Вы сказали - каждый столбец - в отдельном блоке. Соответственно этого и код. Или уточните, в каком именно блоке.


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



Участник


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


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




Да вроде правильно...

Нужно массив разделить на 3 части, и эти 3 части вывести в 3 блока. (вроде так писал... (
(Добавление)
Panoptik пишет:
вам нужно отформатировать блок, а не массив. смотря в каком виде вы хотите вывести результат. используйте цсс, либо таблицы

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


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


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


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




Ну так вот. Результат исполнения скрипта будет:
CODE (html):
скопировать код в буфер обмена
  1. <div>string_0
  2. string_3
  3. string_6
  4. string_9</div><div>string_1
  5. string_4
  6. string_7</div><div>string_2
  7. string_5
  8. string_8</div>

- то, что заявлено. Если не устраивает "внешний вид" - дело другое. Но это можно исправить, к примеру, так:
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. $rgResult = array();
  13. $iLength  = 3;
  14. array_walk($rgData, function($value, $key) use (&$rgResult, $iLength)
  15. {
  16.    $rgResult[$key%$iLength][]=$value;
  17. });
  18. array_walk($rgResult, function($rgValue, $key)
  19. {
  20.    echo("<div style='position: fixed; top: 100; left: ".(100*$key+10)."'>".join("<br/>", $rgValue)."</div>");
  21. });

Стили сами подберете. Или же через таблицу сделаете.


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



Участник


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


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




Мой делает тоже самоеУлыбка). Еще раз всем спасибо.
(Добавление)
Что-то немогу понять как вывести это все в блоки(див), в таблицы получилось.
а в
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div class="trackList">
  3. <div class="trackListBlock"></div>
  4. </div>
  5. неполучается
  6.  

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



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


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


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




у меня там недосмотр был, поспешно вкинул в пост
Цитата:
А хотелось бы, чтобы:

нужно просто индекс прописть [$i], а нe [$i-1]

(Отредактировано автором: 02 Декабря, 2011 - 10:37:32)



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



Участник


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


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




Вопрос еще актуален




Что-то немогу понять как вывести это все в блоки(див), в таблицы получилось.
а в
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div class="trackList">
  3. <div class="trackListBlock"></div>
  4. </div>
  5. неполучается
  6.  

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


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


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


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




Как вывести в div - готовый код я Вам приводил.


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



Участник


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


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




Я помню, но ваш вариант сложный для меня(вдруг редактировать), а там странности))).

P.S Ведь если можно в таблицах, значит можно и в дивах, ток недопру никак..
 
 Top
EuGen Администратор
Отправлено: 02 Декабря, 2011 - 11:26:23
Post Id


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


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


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




Так в том и главное, чтобы Вы разобрали код и поняли, как он работает. Ничего сложного там нет. Почитайте описания соответствующих функций и все.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 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