Autor Zpráva
pavol
Profil *
Potrebujem vytvoriť cyklus, ktorý opakovane vkladá rovnaké údaje do riadkov. Počet riadkov aj údajov môze byt rôzny.
Niečo takéto ak je 10 riadkov a údaje sú 3:

1 - 1
2 - 2
3 - 3

4 - 1
5 - 2
6 - 3

7 - 1
8 - 2
9 - 3

10 - 1
ninja
Profil
musis dat dva cykly do sebe.

for ($a=4; $a<=6; $a++) {
  for ($b=1; $b<=3; $b++) {
    echo ($a . ' - ' . $b);
    }
  }


To cele nejlepe zabalit do funkce, aby sli pocitadla jednoduse modulovat.
pavol
Profil *
for ($a=4; $a<=6; $a++) {
for ($b=1; $b<=3; $b++) {
echo ($a . ' - ' . $b);
}
}



az na to, ze to robi neco ine
1 - 1
1 - 2
1 - 3

2 - 1
2 - 2
2 - 3
Casero
Profil
function Cyklus($radku, $udaju) {
  for ($a=1; $a<=$radku; $a++) 
    echo ($a . ' - ' . ($a%$udaju==0 ? $udaju : $a%$udaju));
}
Cyklus(10,3);
kajaman
Profil
$b = 1;
for ($a = 1; $a <= 10; $a++) {
    echo $a . ' - ' . $b;
    $b++; 
    if ($b == 4) b = 1;
}


EDIT: samozřejmě if ($b == 4) $b = 1;
Měsíček
Profil
Reaguji na pavola:

Pokud bych se měl řídit přesně výsledkem, který jsi napsal v prvním příspěvku tak řešení je tohle:
<?php
  for($a=1,$b=1;$a<=10;){
    echo ($a++)." - ".$b."<br>".(($b==3)?"<br>":"");
      ($b==3)?$b=1:$b++;
  }
?>


Reaguji na kajamana:

Smekám. Prosím zkontroluj si syntax chyby před tím než to zde pošleš.

Reaguji na ninju:

"To cele nejlepe zabalit do funkce, aby sli pocitadla jednoduse modulovat." ... "musis dat dva cykly do sebe. "

Proč?
nightfish
Profil
tak taky přidám svou špetku do mlýna
<?php
for ($i = 1; $i <= 10; $i++) {
  echo $i.' - '.(($i - 1) % 3 + 1).'<br>';
  if ($i % 3 == 0) echo '<br>';
}
?>
Tomasds
Profil
Soutěž minimalistů?

<?php
 for($a=1;$a<=10;){
    echo ($a++)." - ".((($a+1) % 3)+1)."<br>";
    if(!(($a+2) % 3)) echo "<br>";
  }
?>


(nightfish!) :)
Casero
Profil
nightfish
Sakra, že mě to nenapadlo posunout o tu jedničku. Pěkný.

pavol
Jestli ovšem jde i o tu mezeru, tak je to moje řešení vlastně stejný.
function Cyklus($radku, $udaju) {
  for ($a=1; $a<=$radku; $a++) 
    echo $a.' - '.($a%$udaju == 0 ? $udaju.'<br>' : $a%$udaju).'<br>';
}
Cyklus(10,3);
Měsíček
Profil
<?php for($i=1;$i<=10;) echo $i.' - '.(($i-1)%3+1).'<br>'.($i++%3==0?'<br>':''); ?>
Nightfishovo řešení bylo asi nejkratší a nejlepší .. měl bych se už konečně naučit používat modulo.
Casero
Profil
Měsíček
.. měl bych se už konečně naučit používat modulo

Hlavně ho pak necpi všude, jako teď ternární operátor. :P
Měsíček
Profil
Ternární operátor je naprosto senza :) co proti němu máš? :P
pavol
Profil *
Casero - použil som Tvoje riešenie, aj keď som ešte upravil pre svoju potrebu -> tie údaje a riadky.

Pre ostatných - o tu medzeru nešlo, len som chcel aby to bolo na prvý pohľad jasne o čo mi ide.
Všetkým patrí vďaka!
kajaman
Profil
Měsíček
trošku přeháníš ne? jeden překlep (ani jsem neměl možnost si to spustit),
a cyklus mi funguje správně...
srigi
Profil
Tomasds
Ale pouzivat v cykle for() premennu s menom "a", no fuuuuj :)

kajaman
Ternarny op. mam velmi rad, pretoze je to jednoduchy a prehladny sposob ako napr. v app. reagovat na dva mozne stavy. Produkuje to elegantny zapis ako napr:
$text = (get_magic_quotes_gpc()) ? $field : addslashes($field);

Zapis s if/else je v takom pripade zbytocne rozvlaceny.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: