Home > front end >  If Condition Doesnot Work on Foreach Statement PHP?
If Condition Doesnot Work on Foreach Statement PHP?

Time:02-01

so i want to make Dynamic Fontawesome Icons when if statement is match with the condition

foreach ($facility as $facility  => $fac) {
     echo  '<div >';
     echo  '<div >';
     if ($fac == 'Air Conditioner') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Cable Tv') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Dining Area') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Electricity') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Garage') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Gazebo') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Internet') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Kitchen') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Level') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Pool') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Security') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Storage') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Washer or Laundry') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Water Resource') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Wi-Fi') {
        echo '<div ><i ></i></div>';
     }
     echo  '<p>' . $fac . '</p>';
     echo  '</div>';
     echo  '</div>';
}

Echo at the bottom to showing the variable value are correctly showing the available array item of the $facility, but the condition doesnot work, it only work once which is the Air Conditioner only. Some body know where i goes wrong here?

CodePudding user response:

You have a lot of code repeated unnecessarily. Let PHP do the work for you. Consider, if every line is the same except one tiny section, you only need to repeat that tiny section.

<?php
//create a key-value pair so you don't have to have an IF statement for each condition
$facility_map = [
    'air_conditioner' => 'fan',
    'cable_tv' => 'tv',
    'dining_area' => 'utensils',
    'electricity' => 'plug',
    'garage' => 'warehouse',
    'gazebo' => 'home',
    'internet' => 'globe',
    'kitchen' => 'chef',
    'level' => 'level-up-alt',
    'pool' => 'swimmer',
    'security' => 'shield',
    'storage' => 'box',
    'washer_or_laundry' => 'washer',
    'water_resource' => 'water',
    'wi-fi' => 'wifi'
];

foreach($facility as $fac) {

    //trim whitespae at the beginning and end, lowercase everything, change spaced to underscores. Easier to look up in array
    $fac_cleaned = str_replace(' ', '_', trim(strtolower($fac)));

    //check if key in map exists? If not, print and move to next key
    if(!array_key_exists($fac_cleaned, $facility_map)) {
        echo "Unhandled Key ({$fac_cleaned})<br>";
        continue;
    }

    //grab the value from the $facility_map array
    $icon = $facility_map[$fac_cleaned];

    ?>
        <div >
            <div >
                <div ><i ></i></div>
                <p><?= $fac ?></p>
            </div>
        </div>
    <?php
}

This method has a pretty big advantage in that it is very easily expanded. You can just add more values to the $facility_map array, or you could even generate that array from a database.

CodePudding user response:

This work for me....

<?php
$facilityList = [
    'air_conditioner' => 'fan',
    'cable_tv' => 'tv',
    'dining_area' => 'utensils',
    'electricity' => 'plug',
    'garage' => 'warehouse',
    'gazebo' => 'home',
    'internet' => 'globe',
    'kitchen' => 'chef',
    'level' => 'level-up-alt',
    'pool' => 'swimmer',
    'security' => 'shield',
    'storage' => 'box',
    'washer_or_laundry' => 'washer',
    'water_resource' => 'water',
    'wi-fi' => 'wifi'
];


foreach ($facilityList as $facility  => $fac) {
     echo  '<div >';
     echo  '<div >';
     if ($fac == 'Air Conditioner') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Cable Tv') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Dining Area') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Electricity') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Garage') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Gazebo') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Internet') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Kitchen') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Level') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Pool') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Security') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Storage') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Washer or Laundry') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Water Resource') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Wi-Fi') {
        echo '<div ><i ></i></div>';
     }
     echo  '<p>' . $fac . '</p>';
     echo  '</div>';
     echo  '</div>';
}

?>

CodePudding user response:

You can use foreach like that

foreach (iterable_expression as $value){
//commands
}

or

foreach (iterable_expression as $key => $value){
    //commandes
}

Try this :

foreach ($facilityList as $facility  => $fac) {
     echo  '<div >';
     echo  '<div >';
     if ($fac == 'Air Conditioner') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Cable Tv') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Dining Area') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Electricity') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Garage') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Gazebo') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Internet') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Kitchen') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Level') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Pool') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Security') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Storage') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Washer or Laundry') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Water Resource') {
        echo '<div ><i ></i></div>';
     } else if ($fac == 'Wi-Fi') {
        echo '<div ><i ></i></div>';
     }
     echo  '<p>' . $fac . '</p>';
     echo  '</div>';
     echo  '</div>';
}
  •  Tags:  
  • Related