Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]tabela z alfabetem
shreker
post
Post #1





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


witam potrzebuję zrobić tabelę z alfabetem (26x26 pól), ale z przesunięciem w każdym kolejnym rzędzie o 1 znak. poniżej doszedłem do tego momentu:
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
....
a potrzebuję uzyskać coś takiego:
abcdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyza
cdefghijklmnopqrstuvwxyzab
...
  1. echo '<table>';
  2. for($i = 0; $i <= 26; $i++)
  3. {
  4. echo '<tr>';
  5. for($s = 97; $s <= 122; $s++)
  6. {
  7. echo '<td>'.chr($s).'</td>';
  8. }
  9. echo '</tr>';
  10. }
  11. echo '</table>';
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Nie: chr($s)
a: chr($s+$i)

Problem przeskoku koncowki pozostawiam tobie.
Go to the top of the page
+Quote Post
trueblue
post
Post #3





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Środkowa pętla od 0 do 26.

Do $s dodajesz numer wiersza ($i), całość modulo 26 i dodajesz kod pierwszego znaku (97).


Go to the top of the page
+Quote Post
shreker
post
Post #4





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


nospor w niczym mi to nie pomaga, równie dobrze mogę zrobić to tak:
  1. echo '<table>';
  2. $c = 0;
  3. for($i = 0; $i <= 26; $i++)
  4. {
  5. echo '<tr>';
  6. for($s = (97+$c); $s <= 122; $s++)
  7. {
  8. echo '<td>'.chr($s).'</td>';
  9. }
  10. echo '</tr>';
  11. $c++;
  12. }
  13. echo '</table>';

i też będę miał przesunięcie.
w przypadku twojej propozycji będę miał wypełnione "kolejnymi znakami", a zamierzonego efektu nie osiagnę.
"Problem przeskoku koncowki pozostawiam tobie." - gdybym wiedział jak to zrobić to bym nie pisał
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Napisalem ci jak przesunac znaki, bo ewidentnie nie wiedziales. Czyli juz w polowie problem ci rozwiazalem. Jedyne co musisz zrobic to jeszcze rozwiazac problem ostatnich znakow by wracaly na poczatek. No wszystko w nocy mam za ciebie robic? (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
blahy
post
Post #6





Grupa: Zarejestrowani
Postów: 82
Pomógł: 22
Dołączył: 20.07.2010

Ostrzeżenie: (0%)
-----


A ja bym do tego podszedl tak:
  1. <?php
  2.  
  3. $a[0] = range('a', 'z'); // wygeneruj pierwszy wiersz abc...z
  4.  
  5. for ($i = 1; $i<27; $i++) { // wygeneruj odpowiednia ilosc przesunietych wierszy - tutaj ostatni bedzie znowu taki jak pierwszy, czyli abc...z
  6. $row = $a[$i-1]; // skopiuj poprzedni wiersz
  7. $first = array_shift($row); // usun pierwszy znak
  8. $row[] = $first; // i daj go na koniec, czyli z abc...z zrob bcd...za
  9.  
  10. $a[$i] = $row; // dodaj nowy przesuniety wiersz do wyniku
  11. }
  12.  
  13. // wypisz
  14. foreach($a as $row) {
  15. foreach ($row as $char) {
  16. echo $char;
  17. }
  18. echo PHP_EOL;
  19. }


  1. abcdefghijklmnopqrstuvwxyz
  2. bcdefghijklmnopqrstuvwxyza
  3. cdefghijklmnopqrstuvwxyzab
  4. defghijklmnopqrstuvwxyzabc
  5. efghijklmnopqrstuvwxyzabcd
  6. fghijklmnopqrstuvwxyzabcde
  7. ghijklmnopqrstuvwxyzabcdef
  8. hijklmnopqrstuvwxyzabcdefg
  9. ijklmnopqrstuvwxyzabcdefgh
  10. jklmnopqrstuvwxyzabcdefghi
  11. klmnopqrstuvwxyzabcdefghij
  12. lmnopqrstuvwxyzabcdefghijk
  13. mnopqrstuvwxyzabcdefghijkl
  14. nopqrstuvwxyzabcdefghijklm
  15. opqrstuvwxyzabcdefghijklmn
  16. pqrstuvwxyzabcdefghijklmno
  17. qrstuvwxyzabcdefghijklmnop
  18. rstuvwxyzabcdefghijklmnopq
  19. stuvwxyzabcdefghijklmnopqr
  20. tuvwxyzabcdefghijklmnopqrs
  21. uvwxyzabcdefghijklmnopqrst
  22. vwxyzabcdefghijklmnopqrstu
  23. wxyzabcdefghijklmnopqrstuv
  24. xyzabcdefghijklmnopqrstuvw
  25. yzabcdefghijklmnopqrstuvwx
  26. zabcdefghijklmnopqrstuvwxy
  27. abcdefghijklmnopqrstuvwxyz


mozna tez nie tworzyc zmiennej $row, tylko uzyc bezposrednio nowego wiersza $a[$i] no i tez bardziej sprytnie zamieniac znaki pierwszy z ostatnim
Go to the top of the page
+Quote Post
shreker
post
Post #7





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


dzięki blahy. faktycznie, nie pomyślałem żeby to zrobić na tablicach. w międzyczasie znalazłem rozwiązanie na zagranicznym forum, ale dzięki jeszcze raz. szybciej można liczyć na pomoc na innych forach, niż na rodzimych, smutne :-(
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
szybciej można liczyć na pomoc na innych forach, niż na rodzimych, smutne :-(
Szybciej ci podziekuja na zagranicznym forum za udzielenie wskazowek a nie podanie gotowca, niz na rodzimym forum, smutne (IMG:style_emoticons/default/sad.gif) No ale niestety plaga leni z podejsciem "mi sie nalezy" na rodzimym forum coraz wieksza... smutne x 2 (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
trueblue
post
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Chyba mam włączoną opcję niewidoczności postów dla innych, podobnie jak kiedyś Pyton_000.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


@trueblue Nie przejmuj się (IMG:style_emoticons/default/wink.gif) Wspieram Cię duchowo (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




@trueblue jakbys jeszcze nie zauwazyl, to nasz leniuszek oczekuje tylko podania gotowego kodu, a nie jego slownej interpretacji, wiec wiesz, zostales poprostu zignorowany jako post nie wart uwagi... takich czasow dozylismy, smutne.... (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
abrakadabrax
post
Post #12





Grupa: Zarejestrowani
Postów: 2
Pomógł: 1
Dołączył: 7.09.2015

Ostrzeżenie: (0%)
-----


Najprościej:
  1. $alphabet = range('a', 'z');
  2. $i = count($alphabet);
  3. echo '<table>';
  4. while($i--)
  5. {
  6. echo '<tr><td>';
  7. echo join('</td><td>', $alphabet);
  8. echo '</td></tr>';
  9. array_push($alphabet, array_shift($alphabet));
  10. }
  11. echo '</table>';

zamiast range mozesz dać własną tablicę, css we własnym zakresie :-)
Go to the top of the page
+Quote Post
shreker
post
Post #13





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


dzięki wielkie :-)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 06:03