Autor Zpráva
Icka
Profil *
Potřeboval bych malinko navést na funkci, která by mě pomohla nalézt hodnotu v poli která je >= jiné hodnotě. A v tom momentě, (pokud jde o cyklus) aby se to zastavilo, protože těch polí je dost, tak aby to nezatěžovalo systém...
Nějak se mi to nedaří a tuším, že se dá k tomu použít funkce array_search() v kombinaci cyklu while..., ale nevím jak...??
Leo
Profil
"A v tom momentě, (pokud jde o cyklus) aby se to zastavilo, protože těch polí je dost, tak aby to nezatěžovalo systém... "

A co kdyz ta hodnota nebude jedna, ale bude jich vic? Leo
Icka
Profil *
"A co kdyz ta hodnota nebude jedna, ale bude jich vic?"
K tomu 100% nemůže dojít... Jsou to čísla, která jdou vzestupně nahoru takže např.:
$pole[] = 55;
$pole[] = 230;
$pole[] = 450;
$pole[] = 480;
.....

No a já potřebuju najít první hodnotu, která je >=.
Takže když použiju příklad, tak když pošlu číslo 420 tak aby mi to vrátilo 2 (hodnotu pole)
Leo
Profil
A je to pole spojite idexovane od nuly? Leo
Charlie
Profil
function spocitej($pole,$hodnota) {

$counter = 0;
foreach ($pole as $hod) {
if ($hodnota >= $hod) $counter++;
}
return $counter;
}

Tato funkce navrátí počet čísel v poli, které jsou větší než zadaná hodnota.
Icka
Profil *
A je to pole spojite idexovane od nuly?
Ano je...
Leo
Profil
Tak to bude while, kde zvetsujete index do te doby, dokud nenajdete hodnotu vetsi nez vas limit NEBO dokud nedosahnete konce pole. Leo
Icka
Profil *
No já jsem právě tušil že to bude while, ale abych se přiznal, moc mě to nejede...


while ($pole[$i] >= time()) {
echo $pole[$i] . "<br>";
$i++;
}
Icka
Profil *
To co jsem uvedl jsem chtěl použít místo svého dosavadního:



foreach ($pole as $index => $hodnota) {
if ($hodnota >= time())
$nove_pole[] = $index;
}
$vysledek = $nove_pole[0]; // toto je co potřebuji
Leo
Profil
Zkuste si probrat po sobe oba kody a pochopit co jste vlastne napsal (co znamena podminka ve while a co je index v druhem pripade), Leo
Charlie
Profil
Proč používat while, když je foreach rychlejší?
Charlie
Profil
Aha, pardon, už si čtu... První požadovanou hodnotu... Tak úprava:
function vratCislo($pole,$hodnota) {

$counter = 0;
foreach ($pole as $hod) {
if ($hodnota >= $hod) return $hod;
}
return false;
}
Icka
Profil *
Už je to dobrý, měl jsem chybu úplně jinde než jsem čekal a myslel jsem že to vyřeším funkcí while. Už mi to jede jak má...

Díky
Toto téma je uzamčeno. Odpověď nelze zaslat.

0