Portál AbcLinuxu, 15. července 2025 13:28
if(!in_array($a, $b){}nebo bez negace
if(in_array($a, $b){}zkoušel jsem to takto
if($mark.in_array($a, $b){}kde jsem dle potřeby vložil do proměnné $mark !
$mark = '!';ale nefunguje mi to, neporadí někdo? Díky
Řešení dotazu:
if ($mark eq '!' && !in_array($a, $b) || $mark ne '!' && in_array($a, $b) )nebo:
if (eval($mark . 'in_array($a, $b)'))
Co to napsat stylem: mark = true/false, zadny vykricknik a potom if (mark xor in_array(...
Tyhle interpretované jazyky s relativně volnou syntaxí, to je mor…
// $mark = TRUE; // $mark = FALSE; // $mark = ($a > 5); // $mark = !isset($_REQUEST['neg']); // ... if (in_array($a, $b) == $mark) { ... }
P.S.: příště nezapomeňte napsat, o jaký jazyk se jedná, ne vždy je to tak snadné uhodnout.
// $expected - TRUE jako bez vykřičníku, FALSE jako vykřičník
// když není potřeba automatická typová konverze (implicitní přetypování),
// je lepší používat operátory === a !==
if(in_array($a, $b) === $expected)
{
...
}
kde $expected je buď TRUE (pokud nebyl vykřičník) nebo FALSE (pokud měl být vykřičník)
jinak konstrukce if() ocěkává typ boolean (explicitně je to TRUE nebo FALSE hodnota) a to ve všech jazycích, které mají tyb bool, boolean, doporučuju něco o boolean logice přečíst
Negace se udělá unárním operátorem !, to chápete, ale už nedošlo, že nějaký eval je zbytečný.
Eval opravdu ne 'in_array(\$a, \$b)'
, nebo to udelat s tim $expected
jak pise Sten.
The eval() language construct is very dangerous because it allows execution of arbitrary PHP code. Its use thus is discouraged. If you have carefully verified that there is no other option than to use this construct, pay special attention not to pass any user provided data into it without properly validating it beforehand.
#vyber jeden z nasledujicich radku $expected = false; #s negaci $expected = true; #bez negace if (in_array($a, $b) == $expected) { ... }Mozna bys mohl uvest na zaklade ceho se rozhodujes jestli tam ten vykricnik byt mel nebo ne, nejaka data v $_POSTu? Pokud jo tak to muzes udelat i takhle:
if (in_array($a, $b) == intval($_POST['bez_negace'])) { ... }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.