2016-07-26 2 views
0

Существует несколько переменных: $a,$b,$c,$d с булевым значением. Так что я пытаюсь сделать.
php более одного условия является истинным

if($a){echo 1;} 
if($b){echo 2;} 
if($c){echo 3;} 
if($d){echo 4;} 
and so on.. 50 variables 

есть ли лучший способ сделать это?
Примечание: более чем одна переменная может быть правдой.

+3

Loop через переменные в порядке и эхо текущего числа итераций, если оно истинно. Это именно то, для чего нужны петли. – Aaron

+1

[Arrays?] (Http://php.net/manual/en/language.types.array.php) – DontVoteMeDown

+0

вы можете использовать массив, если это возможно, а затем добавить условия с циклом foreach или другим циклом – MKD

ответ

1

Может поставить все логические переменный внутри булева массива, и перебирать массив для проверки значения

$boolArray = array(); 
$boolArray[0] = array($a, 1); 
$boolArray[1] = array($b, 2); 
$boolArray[2] = array($c, 3); 


... 

for($x = 0; $x < count($boolArray); $x++) { 
    if ($boolArray[x][1]) { 
    echo (string)$boolArray[x][2]; 
    } 
} 
+1

@ Marc Giroux: редактирование. .. – Grace

0

Я думаю, что вы ищете что-то вроде этого.

<?php 
# Define the settings you already have 
$a = true; 
$b = true; 
$c = true; 

# Create an array with letters from a to z 
# Instead of this, you can create an array of field names like array('a', 'b', 'c', 'd'); 
$options = range('a', 'z'); 

# Loop in the letters from above 
foreach($options as $id => $letter) { 

    # Check if variable exists and boolean is true 
    if(isset(${$letter}) && ${$letter} === true) { 

     # Output number from id 
     echo $id + 1; 
    } 
} 
?> 
1

Вы можете использовать этот код для итерации:

$a= $b = $c = TRUE; 
$array = array(0=> $a,1=>$b,2=> $c); 
foreach($array as $key => $value){ 
    if($value){ 
     echo $key; 
    } 
}