首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果条件PHP在Foreach语句PHP上工作吗?

如果条件PHP在Foreach语句PHP上工作吗?
EN

Stack Overflow用户
提问于 2022-01-31 13:45:36
回答 3查看 68关注 0票数 -1

因此,当if语句与条件匹配时,我希望生成动态Fontawesome

代码语言:javascript
复制
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>';
}

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-01-31 14:06:01

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

代码语言:javascript
复制
<?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数组添加更多的值,甚至可以从数据库中生成该数组。

票数 3
EN

Stack Overflow用户

发布于 2022-01-31 13:57:27

你可以用这种方法

代码语言:javascript
复制
foreach (iterable_expression as $value){
//commands
}

代码语言:javascript
复制
foreach (iterable_expression as $key => $value){
    //commandes
}

试试这个:

代码语言:javascript
复制
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>';
}
票数 -1
EN

Stack Overflow用户

发布于 2022-01-31 14:29:23

这是我的工作..。

代码语言:javascript
复制
<?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>';
}

?>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70927025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档