php
  • switch-statement
  • 2016-03-09 78 views 1 likes 
    1

    我已经看了这么多,但也许我没有使用正确的术语。这似乎是检查3个字符串数组的非常低效的方法。更高效的开关盒?

    我正在查看数组中的每个项目并单独检查一个值。是否有更短的方法来达到相同的结果?

    $j = get_field('loan_types'); 
    $business = '<i class="fa fa-suitcase"></i>'; 
    $property = '<i class="fa fa-home"></i>'; 
    $personal = '<i class="fa fa-user"></i>'; 
    switch ($j[0]) { 
        case 'Business': 
        echo $business; 
        break; 
        case 'Personal': 
        echo $personal; 
        break; 
        case 'Property': 
        echo $property; 
        break; 
    } 
    switch ($j[1]) { 
        case 'Business': 
        echo $business; 
        break; 
        case 'Personal': 
        echo $personal; 
        break; 
        case 'Property': 
        echo $property; 
        break; 
    } 
    switch ($j[2]) { 
        case 'Business': 
        echo $business; 
        break; 
        case 'Personal': 
        echo $personal; 
        break; 
        case 'Property': 
        echo $property; 
        break; 
    } 
    
    +1

    一个'的foreach内部的开关()'环? http://php.net/manual/en/control-structures.foreach.php – CD001

    回答

    4

    由于$j是一个数组,你可以使用foreach循环,就像这样:

    $j = get_field('loan_types'); 
    $business = '<i class="fa fa-suitcase"></i>'; 
    $property = '<i class="fa fa-home"></i>'; 
    $personal = '<i class="fa fa-user"></i>'; 
    
    foreach ($j as $loan_field) { 
        switch ($loan_field) { 
        case 'Business': 
         echo $business; 
         break; 
        case 'Personal': 
         echo $personal; 
         break; 
        case 'Property': 
         echo $property; 
         break; 
        } 
    } 
    

    编辑:如果你真的喜欢冒险的感觉,看到CBroe”伟大的答案!

    +1

    谢谢,我从各种来源拿起了PHP,从来没有做过任何foreach。现在我明白了 - 非常有帮助! – Nick

    +0

    我很高兴能帮上忙! – GAntoine

    +1

    如果'$ j'也变大了,你将不需要添加任何东西 – KDOT

    3

    你如何取消整个switch声明开始...?

    如果将要在关联数组输出的值,并使用贷款类型作为键,然后就可以有这样的短

    $j = get_field('loan_types'); 
    $icons = array(
        'Business' => '<i class="fa fa-suitcase"></i>', 
        'Property' => '<i class="fa fa-home"></i>', 
        'Personal' => '<i class="fa fa-user"></i>', 
    ); 
    
    foreach($j as $loan_field) { 
        if(isset($icons[$loan_field])) { 
        echo $icons[$loan_field]; 
        } 
    } 
    
    +0

    不错,你击败了我的编辑。我会删除我的并链接到你的! – GAntoine

    +0

    很大程度上看到替代方案,完全可以免除switch语句。 – Nick

    相关问题