Autor Zpráva
huho
Profil *
ako spravim podmienku ze

if ($a $c $d $e $f obsahuju vsetky 0,1,2,3,4) {
echo "OK";
}

teda ak budu cisla
$a=0, $b=1, $c=2, $d=3, $e=4 -> OK
2 1 3 4 0 -> OK

1 1 2 3 4 -> ZLE


viete niekto??som zufaly;(( diky moc
loyza
Profil
no nevim jestli je to to nejlepsi,nejrychlejsi reseni, ale delal bych to takhle:

<?php
$arr=array($a,$c,$d,$e,$f);
if(in_array($arr,0)&&in_array($arr,1)&&in_array($arr,2)&&in_array($arr ,3)&&in_array($arr,4))
echo "ok";
?>
Pavel Prochazka.zde.cz
Profil *
zvyknul jsem si detal testy vzdy postupne.... vypadato prehledne....

if $a=0{
if $b=1{
if $c=2{
.
.
.
}
}
}

otazkou je zda je potreba takove testovani provadet, vzdy se najde lepsi reseni, jak kyzeneho cilu dosahnout jednoduseji....
ale to bych potreboval znat konkretni algoritmus.....
huho
Profil *
takze mam takto:

$a = 0;
$b = 1;
$c = 2;
$d = 3;
$e = 4;

$arr=array($a,$c,$d,$e,$f);

if(in_array($arr,0) && in_array($arr,1) && in_array($arr,2) && in_array($arr,3) && in_array($arr,4)) {
echo "ok";
} else {
echo "zle";
}


a vypise:


Warning: in_array() [function.in-array]: Wrong datatype for second argument in C:Programmexampphtdocs\_programyPNO.php on line 14
zle


takze to nejde preco?
Anonymní
Profil *
co takto kuknut na manual, 2 parameter caka nieco ine a to tvoju premennu $arr, mas to proste naopak
Timy
Profil
Můžu vědět, v čem je lepší to pole? Proč to neudělat takto?

if($a==0 && $b==1 && $c==2 && $d==3 && $e==4) echo "jo";
else echo "ne";
anon
Profil *
Trapko, ale ak bude 4 3 2 1 0 tak je tiez spravne ale nenapise to!!

Můžu vědět, v čem je lepší to pole? Proč to neudělat takto?

if($a==0 && $b==1 && $c==2 && $d==3 && $e==4) echo "jo";
else echo "ne";
Timy
Profil
anon
Ach tak, nepochopil jsem zadání, pardon.
Honza Široký
Profil
Nezkoušel jsem to, ale dělal bych to takhle:
$test = array ('0', '1', '2', '3', '4');

$input = array ($a, $b, $c, $d, $e);
sort ($input);
if ($input == $test)
{
echo 'OK';
}
koudi
Profil
Udělej si dvě pole, jedno na hodnoty co chceš, jedno na proměnný. Pak si projeď pole požadovaných hodnot (foreach). V každém kroku hledej v poli proměnných (in_array), jestli tam ta hodnota je. Pokud najdeš všechny, return true, pokud něco nenajdeš, tak false. Teda jestli sem to správně pochopil.
ronnie
Profil
Ok, tak kolik najdem řešení:)



if (!array_diff(array($a, $b, $c, $d, $e), range(0,4))) {
echo 'OK!';
}
loyza
Profil
Jako řešení máme, i více, ale spíš by mě zajímalo, které z těchto řešení bude nejrychlejší. Které z těchto řešení bude nejlepčí. Subjektivně si myslím, že řešení Honzy Širokého bude fungovat asi nejrychleji, ale na druhou stranu si nejsem jistý, jak proběhne to porovnání $input == $test.
ronnie
Profil
Všechny zmíněná řešení jsou rychlá;)
ronnie
Profil
Z hlediska přehlednosti bude asi nejlepší řešení:


$input = array ($a, $b, $c, $d, $e);
sort ($input, SORT_NUMERIC);
if ($input == range(0, 4)) {
echo 'OK';
}
koudi
Profil
Udělej si dvě pole, jedno na hodnoty co chceš, jedno na proměnný. Pak si projeď pole požadovaných hodnot (foreach). V každém kroku hledej v poli proměnných (in_array), jestli tam ta hodnota je. Pokud najdeš všechny, return true, pokud něco nenajdeš, tak false.

x

!array_diff(array($a, $b, $c, $d, $e), range(0,4))

No jo, tady je prostě vidět ta propast mezi profesionálem a středně pokročilým amatérem...kruci :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0