Používam nasledujúce
if (!empty($data["var_1"])
&& !empty($data["var_2"])
&& !empty($data["var_3"])
&& !empty($data["var_4"])
&& !empty($data["var_5"])
&& !empty($data["var_6"])
&& !empty($data["var_7"])
&& !empty($data["var_8"])
&& !empty($data["var_9"])) {
//BLOCK HERE
}
V podstate to, čo sa snažím dosiahnuť, je ak všetko z premenných sú prázdne, blok je zablokovaný. Ak je 8 alebo menej prázdnych, zobrazte blok.
Kam sa pokazím?
odpovede:
1 pre odpoveď č. 1Chceš ||
nie &&
, Toto zobrazí blok iba vtedy, ak nie sú prázdne. Myslím, že je to asi krajší spôsob, ako to urobiť, ako, ako array_filter
.
1 pre odpoveď č. 2
No, môžete použiť len slučku a $isok
premenná:
$isok = false;
for($i=1; $i<10; $i++) {
if( !empty($data["var_".$i])) {
$isok = true;
break; // no need to continue looping
}
}
if( $isok) {
// BLOCK HERE
}
Toto je jednoduchšie upravovať aj v prípade, že ho zmeníte var_
odlišný rozsah čísel.
1 pre odpoveď č. 3
Môžete sa tiež pokúsiť
$data = array_filter($data); // remove all empty value form array
if (count($data)) {
// do your thing
}
0 pre odpoveď č. 4
Kód, ktorý ste napísali, zobrazí blok, ak VŠETKY premenné nie sú prázdne. Ak chcete, aby sa zobrazovali, keď je niektorá z premenných prázdna, použite OR namiesto AND nahradením &&
podľa ||
.
<?php
if (!empty($data["var_1"]) || !empty($data["var_2"]) || !empty($data["var_3"]) || !empty($data["var_4"]) || !empty($data["var_5"]) || !empty($data["var_6"]) || !empty($data["var_7"]) || !empty($data["var_8"]) || !empty($data["var_9"])) {
//BLOCK HERE
}
0 pre odpoveď č. 5
Môžeš použiť array_values () pre to:
if ( count(array_values($data)) ) {
//BLOCK HERE
}
0 pre odpoveď č. 6
Nahraďte && (AND) príkazom || (OR)
if (!empty($data["var_1"])
|| !empty($data["var_2"])
|| !empty($data["var_3"])
|| !empty($data["var_4"])
|| !empty($data["var_5"])
|| !empty($data["var_6"])
|| !empty($data["var_7"])
|| !empty($data["var_8"])
|| !empty($data["var_9"])) {
//BLOCK HERE
}
0 pre odpoveď č. 7
if (empty(array_values($data))) { /* will return you true if all variables are empty*/}