Autor Zpráva
vomackav
Profil *
Napadla mě (podle mě) zajímavá myšlenka.

Mám pomocí cyklu for udělanou řadu čísel od 1-100.
V databázi mám pole o čtyrech proměnných. Např 1,7,56,94.
Jakým způsobem vypíši řadu čísel 1-100, která nebude obsahovat číslice z daného pole?

Díky V.
Tori
Profil
Ta řada od 1 do 100 je spojitá (bez mezer) nebo ne?
lorin
Profil
Pokud to musí být pomocí for:

$seznam_vynechanych = array(1, 7, 56, 94);

for ( $i = 1; $i != 100; $i++ ) {
    if ( in_array( $i, $seznam_vynechanych ) ) {
        continue;
    }

    // ...

}
Tori
Profil
Doplním, proč jsem se ptala:
Pokud je řada spojitá, bude jednodušší vygenerovat pole hodnot 1 až 100 fcí range, a pak projít cyklem těch pár čísel z DB (má méně než 100 prvků takže kratší cyklus) a pro každé provést unset($poleHodnot[($cisloZDatabaze - $min)], kde $min je nejnižší z pole hodnot (tedy 1).

Pro nespojitou (jakoukoli) řadu bych použila v podstatě [#3], jen bude efektivnější uložit čísla z DB jako klíče pole, a místo in_array použít obyčejné isset.
tiso
Profil
vomackav, Tori: pre spojitú radu to pole netreba ani generovať, stačí v cykle inkrementovať premennú.
Tori
Profil
tiso:
Aha, díky, myslela jsem (bez ověření), že range je efektivnější.
tiso
Profil
Tori: tak efektívnosť... Je to pamäť vs. rýchlosť, riešiť mikrooptimalizáciu nemá zmysel.
peta
Profil
Kdyby se to melo delat komplikovane, pak bych vstup seradil, overil, zda je na zacatku 1 a 100 a pokud ne pridal. A pak pres foreach pro kazdy par ze vstupniho pole for pro [$a,$b].
Coz by mohlo byt pro vic cisel rychlejsi nez pokazde prochazet cele pole pres in_array $seznam_vynechanych.
tiso
Profil
peta: „Kdyby se to melo delat komplikovane
Dôvod?
vomackav
Profil *
Díky, vyřešeno:

$seznam_vynechanych = array(1, 7, 56, 94);

for ($i=1; $i<=100; $i++):
if (!in_array($i,$seznam_vynechanych)) 
 {echo $i;}
endfor;
peta
Profil
tiso: Proc se ptas na neco, co jsem v tom prispevku uz zodpovedel?

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:

0