Форумы портала PHP.SU » » Вопросы новичков » как разделить слова по табличкам

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

1. leon2009sp - 14 Февраля, 2020 - 05:30:56 - перейти к сообщению
Здравствуйте! как сделать все слова на А в одной таблице html, все слова на Б в другой таблице html, чтобы было 4 столбца. и Н строк. Спасибо!.

пробовал так: Закатив глазки

PHP:
скопировать код в буфер обмена
  1. echo '<table border="1">
  2. <tr>
  3. <td>1</td>
  4. <td>2</td>
  5. <td>3</td>
  6. <td>4</td>
  7. ';
  8. $arr = array('Actona', 'Aricasa', 'ARTE Lamp', 'Apollo', 'Anli', 'BONTEMPI', 'BelVase', 'Beal. Real', 'Blonder Home', 'Casa Vera', 'ClassicFlame', 'Easyfurn', 'FMD', 'Fif', 'FENICE', 'Forma Ideale', 'Friedrich von der Kohlen', 'Flocmat', 'FRAMAR', 'Garantie Mobel', 'Gumexpo', 'Globo', 'Germania', 'GIMI', 'Honsel', 'Haku', 'Heinz Hofmann', 'IMV-Steinheim', 'INNOVATION', 'InterFlame', 'Komforta Mobel', 'KESPER', 'Myflair', 'Marquis', 'Martini spa', 'NATISA', 'Nikotex', 'O&G', 'ODISO', 'Paroli', 'Pushe', 'PRISMEA', 'Polster Luxe', 'PICARD & WIELPUTZ', 'Primavelle', 'Pinella', 'Rinos', 'Ravel', 'Solutions', 'Sobranie', 'SSW', 'Trio', 'Vental', 'ZELLER');
  9.  
  10.  
  11. $letter='';
  12. foreach($arr as $r){
  13.     if($letter!=$r[0]){
  14.     $letter=$r[0];          
  15.     echo '<h1>',strtoupper($letter),'</h1>';
  16.     }
  17.     echo '<td><br />название:', $r,'</td></tr>';
  18. }
  19. echo '</table>';


пробовал так: Закатив глазки

PHP:
скопировать код в буфер обмена
  1. $xml = simplexml_load_file("xml1.xml") or die("Error: Cannot create object");
  2. echo "<table>
  3. ";
  4. if(!empty($xml->link->page))
  5. {
  6.         $agrs = $xml->link->page;
  7.         foreach ($agrs as $vals)
  8. {
  9. echo "<tr><td><a href='111.php'>$vals</a></td></tr>";
  10. }
  11. }
  12. echo "</table>";


но только рисунки в виде пирамид. Растерялся
а хотелось получить такое:

CODE (html):
скопировать код в буфер обмена
  1. <table>
  2. <tr>
  3. <td>aaaa, aaaa, aaaa, aaaa </td>
  4. <td>bbb bbbb  bbbb  bbbb</td>
  5. <td>cccc ccccc cccccc ccccc </td>
  6. <td>ddddd ddddd dddd dddd</td>
  7. </tr>
  8. <tr>
  9. <td>eeeeee eeee eee </td>
  10. <td>ffff fff ffff  ffff</td>
  11. <td>jjjjjj jjjjjjj jjjj </td>
  12. <td>hhhhh hhhhh hhhh</td>
  13. </tr>
  14. <tr>
  15. <td>оооооооооо</td>
  16. <td>жжжжжжжж</td>
  17. <td>иииииииии </td>
  18. <td>ккккккккккк</td>
  19. </tr>
  20. <tr>
  21. <td>ллллллллл</td>
  22. <td>ffff fff ffff  ffff</td>
  23. <td>jjjjjj jjjjjjj jjjj </td>
  24. <td>hhhhh hhhhh hhhh</td>
  25. </tr>
  26. </table>
2. Vladimir Kheifets - 14 Февраля, 2020 - 10:00:04 - перейти к сообщению
leon2009sp пишет:
Здравствуйте! как сделать все слова на А в одной таблице html, все слова на Б в другой таблице html, чтобы было 4 столбца. и Н строк. Спасибо!.

Добрый день!
Попробуйте сделать так:
Спойлер (Отобразить)
получите массив:
Спойлер (Отобразить)
Удачи!
3. leon2009sp - 14 Февраля, 2020 - 17:08:42 - перейти к сообщению
он ругается на:
Растерялся
4. Vladimir Kheifets - 14 Февраля, 2020 - 17:43:47 - перейти к сообщению
leon2009sp пишет:
он ругается на:
Растерялся

У Вас неактульная версия PHP
Замените на
PHP:
скопировать код в буфер обмена
  1. $index=array();
5. LIME - 14 Февраля, 2020 - 18:08:14 - перейти к сообщению
если данные уже отсортированы можно и без промежуточного накопления обойтись
6. Vladimir Kheifets - 14 Февраля, 2020 - 20:44:54 - перейти к сообщению
leon2009sp пишет:
Здравствуйте! как сделать все слова на А в одной таблице html, все слова на Б в другой таблице html, чтобы было 4 столбца. и Н строк. Спасибо!.

LIME пишет:
если данные уже отсортированы можно и без промежуточного накопления обойтись

Покажите код...
7. leon2009sp - 14 Февраля, 2020 - 20:46:22 - перейти к сообщению
Огорчение а как мне это все в таблицу запихнуть?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $arr = array('Actona', 'Aricasa', 'ARTE Lamp', 'Apollo', 'Anli', 'BONTEMPI', 'BelVase', 'Beal. Real', 'Blonder Home', 'Casa Vera', 'ClassicFlame', 'Easyfurn', 'FMD', 'Fif', 'FENICE', 'Forma Ideale', 'Friedrich von der Kohlen', 'Flocmat', 'FRAMAR', 'Garantie Mobel', 'Gumexpo', 'Globo', 'Germania', 'GIMI', 'Honsel', 'Haku', 'Heinz Hofmann', 'IMV-Steinheim', 'INNOVATION', 'InterFlame', 'Komforta Mobel', 'KESPER', 'Myflair', 'Marquis', 'Martini spa', 'NATISA', 'Nikotex', 'O&G', 'ODISO', 'Paroli', 'Pushe', 'PRISMEA', 'Polster Luxe', 'PICARD & WIELPUTZ', 'Primavelle', 'Pinella', 'Rinos', 'Ravel', 'Solutions', 'Sobranie', 'SSW', 'Trio', 'Vental', 'ZELLER');
  3. $index=array();
  4. //$index=[];
  5. foreach($arr as $v)
  6. {
  7.         $first=substr($v,0,1);
  8.         $index[$first][]=$v;
  9.                 echo "<table><tr><td>",$v,"</td></tr></table>";
  10. }
  11. ksort($index);
  12. echo "<pre>";
  13. print_r($index);
  14. ?>

в самом начале то что пытался сделать, но выходят пирамиды.
8. LIME - 14 Февраля, 2020 - 21:38:15 - перейти к сообщению
Vladimir Kheifets сейчас не покажу
Либо ждать воскресенье либо подумайте над условием $oldFirstLetter !== $itemFirstLetter
И по условию вставлять tr
Делал не единожды на заре карьеры в 2011 примерно
Покажу если сам не допрешь
9. leon2009sp - 15 Февраля, 2020 - 17:54:13 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP  
  2. $arr = array('Actona', 'Aricasa', 'ARTE Lamp', 'Apollo', 'Anli', 'BONTEMPI', 'BelVase', 'Beal. Real', 'Blonder Home', 'Casa Vera', 'ClassicFlame', 'Easyfurn', 'FMD', 'Fif', 'FENICE', 'Forma Ideale', 'Friedrich von der Kohlen', 'Flocmat', 'FRAMAR', 'Garantie Mobel', 'Gumexpo', 'Globo', 'Germania', 'GIMI', 'Honsel', 'Haku', 'Heinz Hofmann', 'IMV-Steinheim', 'INNOVATION', 'InterFlame', 'Komforta Mobel', 'KESPER', 'Myflair', 'Marquis', 'Martini spa', 'NATISA', 'Nikotex', 'O&G', 'ODISO', 'Paroli', 'Pushe', 'PRISMEA', 'Polster Luxe', 'PICARD & WIELPUTZ', 'Primavelle', 'Pinella', 'Rinos', 'Ravel', 'Solutions', 'Sobranie', 'SSW', 'Trio', 'Vental', 'ZELLER');
  3. $index=array();//$index=[];
  4. foreach($arr as $v)
  5. {
  6.  $first=substr($v,0,1);
  7. $index[$first][]=$v;                
  8. }      
  9. for ($i = 0; $i <= count($arr); $i++)
  10. {
  11. echo $arr[$i]." ";
  12. $rows = count($arr);
  13. }
  14. //ksort($index);
  15. //echo "<pre>";
  16. //print_r($index);
  17. //$rows = 20; // количество строк, tr
  18. $cols = 4; // количество столбцов, td
  19. $table = '<table border="1">';
  20. for ($tr=1; $tr<=$rows; $tr++){
  21. $table .= '<tr>';
  22. for ($td=1; $td<=$cols; $td++){
  23. $table .= '<td>'.$i.'</td>';
  24. }
  25.  $table .= '</tr>';
  26. }
  27. $table .= '</table>';
  28. echo $table; // сделали эхо всего 1 раз
  29. ?>
10. Vladimir Kheifets - 15 Февраля, 2020 - 20:00:15 - перейти к сообщению
leon2009sp пишет:
Огорчение а как мне это все в таблицу запихнуть?[
в самом начале то что пытался сделать, но выходят пирамиды.

LIME пишет:
Vladimir Kheifets сейчас не покажу
Либо ждать воскресенье либо подумайте над условием $oldFirstLetter !== $itemFirstLetter
И по условию вставлять tr
Делал не единожды на заре карьеры в 2011 примерно
Покажу если сам не допрешь

Добрый день!
Славу Богу сейчас не 2011 год и можно обойтись без таблиц даже если очень хочется в четыре столбца без пирамид.
Это код с HTML,CSS PHP:
Спойлер (Отобразить)
результат на скриншоте.
Удачи!
11. leon2009sp - 16 Февраля, 2020 - 16:16:52 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $arr = array('Actona', 'Aricasa', 'ARTE Lamp', 'Apollo', 'Anli', 'BONTEMPI', 'BelVase', 'Beal. Real', 'Blonder Home', 'Casa Vera', 'ClassicFlame', 'Easyfurn', 'FMD', 'Fif', 'FENICE', 'Forma Ideale', 'Friedrich von der Kohlen', 'Flocmat', 'FRAMAR', 'Garantie Mobel', 'Gumexpo', 'Globo', 'Germania', 'GIMI', 'Honsel', 'Haku', 'Heinz Hofmann', 'IMV-Steinheim', 'INNOVATION', 'InterFlame', 'Komforta Mobel', 'KESPER', 'Myflair', 'Marquis', 'Martini spa', 'NATISA', 'Nikotex', 'O&G', 'ODISO', 'Paroli', 'Pushe', 'PRISMEA', 'Polster Luxe', 'PICARD & WIELPUTZ', 'Primavelle', 'Pinella', 'Rinos', 'Ravel', 'Solutions', 'Sobranie', 'SSW', 'Trio', 'Vental', 'ZELLER');
  3. $letter='';
  4. $rows = 1; // количество строк, tr
  5. $cols = 4; // количество столбцов, td
  6. echo '<table border="1">';
  7. for ($tr=1; $tr<=$rows; $tr++)
  8. {
  9. echo '<tr>';
  10. for ($td=1; $td<=$cols; $td++){ // в этом цикле счётчик $td аналогичен
  11.                                     // счётчику $tr.
  12.         echo '<td>';
  13. foreach($arr as $r){
  14.     if($letter!=$r[0]){
  15.     $letter=$r[0];          
  16.     echo '<h1>',strtoupper($letter),'</h1>';
  17.     }
  18.     echo '<br />название:', $r,'';
  19. }
  20. }
  21. echo '</td></tr>';
  22. }
  23. echo '</table>';
  24. ?>

почти получилось Огорчение
12. Vladimir Kheifets - 16 Февраля, 2020 - 19:33:34 - перейти к сообщению
leon2009sp пишет:
Спойлер (Отобразить)

почти получилось Огорчение
Почти получилось, значит скоро Вами будет найдено верное решение и его можно будет увидеть.
13. leon2009sp - 16 Февраля, 2020 - 21:09:25 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $xml = simplexml_load_file("xml/db.xml") or die("Error: Cannot create object");
  3. echo "<table border=1><tr>";
  4. if(!empty($xml->link->page))
  5. {
  6.     $agrs = $xml->link->page;
  7.     foreach ($agrs as $vals)
  8. {
  9. echo "<td><a href=$vals[name] >$vals</a></td>";
  10. }
  11. echo "</tr>";
  12. }
  13. echo "</table>";
  14. ?>

даже в одну линию получилось Хм Растерялся
14. Vladimir Kheifets - 17 Февраля, 2020 - 07:37:57 - перейти к сообщению
leon2009sp пишет:
Спойлер (Отобразить)

даже в одну линию получилось Хм Растерялся

Добрый день!
Кажется, в начале Вы хотели в 4 столбца.
leon2009sp пишет:
как сделать все слова на А в одной таблице html, все слова на Б в другой таблице html, чтобы было 4 столбца. и Н строк.

Если Вы ещё хотите этого добиться и хотите использовать таблицы,
то советую Вам попробовать сделать html разбивку без PHP для слов на одну букву.
Например "A":
Спойлер (Отобразить)
Если это то, что Вы первоначально хотели сделать, попробуйте написать на PHP.
Иначе, покажите свой макет html разбивки, которую Вы хотите реализовать.
Удачи!

 

Powered by ExBB FM 1.0 RC1