【问题标题】:PHP ForEach Loop inside while Returning Duplicate RowsPHP ForEach 内部循环,同时返回重复行
【发布时间】:2022-07-21 18:38:01
【问题描述】:

我正在尝试在 PHP 中创建嵌套复选框列表。为此,我编写了下面的代码,其中包含多个嵌套的 foreach 循环

<?php
     $sql_concern="SELECT * FROM sister_concern  where Base_user='$User_id' And Status='Active'";
     $result_concern = mysqli_query($link,$sql_concern);
                                  
     if(mysqli_num_rows($result_concern) > 0){
         echo '<ul>';
         while($row = mysqli_fetch_array($result_concern)){
         $sisid=$row['Id'];
         $name=$row['Name'];
         $namearray[]=$name;

             foreach($namearray as $data){
             
            //this one coming duplicate
             echo '<li style="list-style-type:none;"><input type="checkbox" name="sister_concern" class="chkMainConcern" id="chkMainConcern'.$sisid.'" value="'.$sisid.'" > '.$name.' </li>';
                                                 
             //fetch module Name for each concern
             $sql_module="SELECT * FROM Module where Status='Active'"; 
             $result_module = mysqli_query($link,$sql_module);
                                                 
                 echo '<ul class="modulename'.$sisid.'" style="display:none;">';
                 while($rowmodule = mysqli_fetch_array($result_module)){
                 $modid=$rowmodule['Id'];
                 $modname=$rowmodule['Name'];
                 $modearray[]=$modname;

                      foreach($modearray as $val){
                         //module name 
                         echo '<li style="list-style-type:none;"><input type="checkbox" value="'.$modid.'"> '.$rowmodule['Name'].' </li>'; 
                                                        
                          //fetch module permission for each module
                          $sql_modhooks="SELECT * FROM Module_hooks where Status='Active' and ModuleID='$modid'";
                          $result_modhooks = mysqli_query($link,$sql_modhooks);
                          echo '<ul class="modulehooks'.$modid.'" style="display:none;">';
                          while($row_modhooks = mysqli_fetch_array($result_modhooks)){
                             echo '<li style="list-style-type:none;"><input type="checkbox"  value="'.$modid.'"> '.$row_modhooks['display_txt'].' </li>'; 
                          }
                          echo '</ul>';
                          }
                                                     
                     }
                     echo '</ul>';
                                             
                }
                                        
             }
             echo '</ul>';
    }else{
          echo 'No Concern Added Yet! Pls Add a Concer First';
    }
                                
?>

它给了我这样的输出https://imgur.com/a/xlTMB0l,结果如期而至。只有第一个 foreach 循环的问题值随着增长而复制。代码有什么问题

【问题讨论】:

    标签: php foreach nested-loops


    【解决方案1】:
    $namearray[]=$name;
    

    这将附加到现有数组。在此声明之前执行unset($namearray),我认为它应该删除您的重复项。

    【讨论】:

    • 未设置($namearray); $namearray[]=$name;结果相同
    猜你喜欢
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 2012-07-19
    • 2013-02-16
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多