【问题标题】:Codeigniter : Using switch with foreach loopCodeigniter:使用带有 foreach 循环的 switch
【发布时间】:2025-12-25 00:21:50
【问题描述】:

我像这样将数组数据传递给我的视图

public function login(){
       $array= array(
           array(
                'type'           =>     'text',
                'usrname'        =>     'username',
                'class'          =>     'form-control',
                'placeholder'    =>     'Username',
             ),
           array(
                'type'           =>     'password',
                'class'          =>     'form-control',
                'placeholder'    =>     'Password',
            ),
           array(
                'type'          =>'heading',
                'heading'       =>'Not a Memer YET ?',
            ),

       );

    $output['data']=$array;
    $this->load->view('authentication',$output);

在我看来,这就是我正在做的事情

<?php foreach ($data as $key=> $value):?>
        <?php 
            switch ($value){
                case  $value['type']=='heading':
                    echo $value['heading'];
                    break;
                case  $value['type']=='text':
                    echo 'textfield';
                    break;
             }

        ?>
    <?php endforeach;?>

这工作正常,但我只是想问一下,这是我这样做的标准做法,还是有更好的方法在 switch 中遍历这个数组。

需要你的帮助

这个问题不是关于我是否应该使用 switch 或者如果其他,我想知道我在编码方面使用 switch 的方式是否正确?或者我可以改进它。

【问题讨论】:

  • 使用if 替代
  • 您可能想阅读 PHP MVC 架构。此外,您当前的解决方案迟早会因为更多的元素和更多的数据而变得非常混乱。
  • @MioBambino 我试了一下,并要求指出我该如何改进它,如果 ts 杂乱给我一点提示来整理
  • @Spartan 所以如果我使用 if else 对这种情况有好处,而不是 switch ?

标签: php arrays codeigniter loops foreach


【解决方案1】:

您可以像这样修改您的开关代码,而不是在开关情况下进行比较。

<?php foreach ($data as $key=> $value):?>
<?php 
    switch ($value['type']){
        case 'heading':
                        echo "heading";
                        break;
        case 'text':
                        echo 'textfield';
                        break;
        default : //default code here
     }

?>
<?php endforeach;?>

【讨论】: