如果条件不适用于Foreach语句PHP



所以当if语句与条件匹配时,我想制作动态字体图标

foreach ($facility as $facility  => $fac) {
echo  '<div class="col-span-4">';
echo  '<div class="flex w-full">';
if ($fac == 'Air Conditioner') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-fan"></i></div>';
} else if ($fac == 'Cable Tv') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-tv"></i></div>';
} else if ($fac == 'Dining Area') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-utensils"></i></div>';
} else if ($fac == 'Electricity') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-plug"></i></div>';
} else if ($fac == 'Garage') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-warehouse"></i></div>';
} else if ($fac == 'Gazebo') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-home"></i></div>';
} else if ($fac == 'Internet') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-globe"></i></div>';
} else if ($fac == 'Kitchen') {
echo '<div class="w-8 text-bvr20"><i class="far fa-hat-chef"></i></div>';
} else if ($fac == 'Level') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-level-up-alt"></i></div>';
} else if ($fac == 'Pool') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-swimmer"></i></div>';
} else if ($fac == 'Security') {
echo '<div class="w-8 text-bvr20"><i class="fad fa-shield"></i></div>';
} else if ($fac == 'Storage') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-box"></i></div>';
} else if ($fac == 'Washer or Laundry') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-washer"></i></div>';
} else if ($fac == 'Water Resource') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-water"></i></div>';
} else if ($fac == 'Wi-Fi') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-wifi"></i></div>';
}
echo  '<p>' . $fac . '</p>';
echo  '</div>';
echo  '</div>';
}

底部显示变量值的回声正确地显示了$设施的可用数组项,但条件不起作用,它只起作用一次,这只是空调。有人知道我哪里错了吗?

您有很多不必要的代码重复。让PHP为您完成工作。考虑一下,如果每一行都是相同的,除了一个微小的部分,你只需要重复那个微小的部分。

<?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 class="col-span-4">
<div class="flex w-full">
<div class="w-8 text-bvr20"><i class="far fa-<?= $icon ?>"></i></div>
<p><?= $fac ?></p>
</div>
</div>
<?php
}

这种方法有一个很大的优点,那就是它很容易扩展。您可以向$facility_map数组添加更多的值,甚至可以从数据库中生成该数组。

您可以像一样使用foreach

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

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

试试这个:

foreach ($facilityList as $facility  => $fac) {
echo  '<div class="col-span-4">';
echo  '<div class="flex w-full">';
if ($fac == 'Air Conditioner') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-fan"></i></div>';
} else if ($fac == 'Cable Tv') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-tv"></i></div>';
} else if ($fac == 'Dining Area') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-utensils"></i></div>';
} else if ($fac == 'Electricity') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-plug"></i></div>';
} else if ($fac == 'Garage') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-warehouse"></i></div>';
} else if ($fac == 'Gazebo') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-home"></i></div>';
} else if ($fac == 'Internet') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-globe"></i></div>';
} else if ($fac == 'Kitchen') {
echo '<div class="w-8 text-bvr20"><i class="far fa-hat-chef"></i></div>';
} else if ($fac == 'Level') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-level-up-alt"></i></div>';
} else if ($fac == 'Pool') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-swimmer"></i></div>';
} else if ($fac == 'Security') {
echo '<div class="w-8 text-bvr20"><i class="fad fa-shield"></i></div>';
} else if ($fac == 'Storage') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-box"></i></div>';
} else if ($fac == 'Washer or Laundry') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-washer"></i></div>';
} else if ($fac == 'Water Resource') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-water"></i></div>';
} else if ($fac == 'Wi-Fi') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-wifi"></i></div>';
}
echo  '<p>' . $fac . '</p>';
echo  '</div>';
echo  '</div>';
}

这对我有用…

<?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 class="col-span-4">';
echo  '<div class="flex w-full">';
if ($fac == 'Air Conditioner') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-fan"></i></div>';
} else if ($fac == 'Cable Tv') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-tv"></i></div>';
} else if ($fac == 'Dining Area') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-utensils"></i></div>';
} else if ($fac == 'Electricity') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-plug"></i></div>';
} else if ($fac == 'Garage') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-warehouse"></i></div>';
} else if ($fac == 'Gazebo') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-home"></i></div>';
} else if ($fac == 'Internet') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-globe"></i></div>';
} else if ($fac == 'Kitchen') {
echo '<div class="w-8 text-bvr20"><i class="far fa-hat-chef"></i></div>';
} else if ($fac == 'Level') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-level-up-alt"></i></div>';
} else if ($fac == 'Pool') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-swimmer"></i></div>';
} else if ($fac == 'Security') {
echo '<div class="w-8 text-bvr20"><i class="fad fa-shield"></i></div>';
} else if ($fac == 'Storage') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-box"></i></div>';
} else if ($fac == 'Washer or Laundry') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-washer"></i></div>';
} else if ($fac == 'Water Resource') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-water"></i></div>';
} else if ($fac == 'Wi-Fi') {
echo '<div class="w-8 text-bvr20"><i class="fas fa-wifi"></i></div>';
}
echo  '<p>' . $fac . '</p>';
echo  '</div>';
echo  '</div>';
}
?>

最新更新