Php Foreach重复值

Php Foreach重复值,php,html,mysql,codeigniter,Php,Html,Mysql,Codeigniter,我正在研究一个文件共享系统。我的查询结果如下,当我使用print\r()时,我得到了所需的数据,但问题是我不知道如何以特定格式显示它 我的数据库架构.. table folder ID folder_name path 1 tep dulay table files ID file_name path 1 1.jpg dulay 2 2.jpg

我正在研究一个文件共享系统。我的查询结果如下,当我使用
print\r()
时,我得到了所需的数据,但问题是我不知道如何以特定格式显示它

我的数据库架构..

table folder 

    ID    folder_name    path
    1     tep            dulay

table files 

       ID   file_name   path 
       1    1.jpg       dulay
       2    2.jpg       dulay
    <table class="table table-hover">
        <th>Folder NAME</th>
        <th>FILES</th>
        <?php 
        foreach($my_files as $key )
        {
        ?>
        <tr>
            <td><?php echo $key->folder_name?></td>
            <td><a href="<?php echo base_url()?>filesharing/<?php echo $key->path?>/<?php echo $key->file_name?>" download="<?php echo $key->file_name;?>"><?php echo $key->file_name?></a></td>
        </tr>
        <?php 
        }
        ?>
    </table>
所需结果必须与dropbox.com类似

My files
tep folder         
1.jpg
2.jpg        
查询似乎是正确的,但当我显示它时。它的输出如下所示。我认为原因是我有2个文件,这就是为什么它在循环中重复文件夹tpp

My files    
tep folder            
tep folder
1.jpg 
2.jpg
我想问题出在我的foreach循环中

PHP代码..

table folder 

    ID    folder_name    path
    1     tep            dulay

table files 

       ID   file_name   path 
       1    1.jpg       dulay
       2    2.jpg       dulay
    <table class="table table-hover">
        <th>Folder NAME</th>
        <th>FILES</th>
        <?php 
        foreach($my_files as $key )
        {
        ?>
        <tr>
            <td><?php echo $key->folder_name?></td>
            <td><a href="<?php echo base_url()?>filesharing/<?php echo $key->path?>/<?php echo $key->file_name?>" download="<?php echo $key->file_name;?>"><?php echo $key->file_name?></a></td>
        </tr>
        <?php 
        }
        ?>
    </table>

我假设所需的输出与您在第一块中所述的一样

  folder_name    file_name
  tep            1.jpg
                 2.jpg
  **folder_name**    **file_name**   
          tep        1.jpg
                     2.jpg

试试这段代码,它会跟踪重复的文件夹和文件,这样文件夹和文件的名称只显示一次

 <?php
    $prevFolder=null;
    $prevFile=null; 
    foreach($my_files as $key )
    {
      echo '<tr>';
     if($key->folder_name!=$prevFolder){
         echo '<td>'.$key->folder_name.'</td>';
         $prevFolder=$key->folder_name;
     }
     else{
          echo '<td></td>';
     }

     if($key->file_name!=$prevFile){
         echo '<td><a href="'.base_url().'filesharing/'.$key->path.'/'.$key->file_name.'" download="'.$key->file_name.'">'.$key->file_name.'</a></td>';
         $prevFile=$key->file_name;
     }
     else{
          echo '<td></td>';
     }
  ?> 

    </tr>
    <?php 
    }
    ?>


注意:要始终获得正确的输出。建议按照文件名或文件夹名对结果进行排序*

我假设所需的输出与您在第一块中所述的相同

  folder_name    file_name
  tep            1.jpg
                 2.jpg
  **folder_name**    **file_name**   
          tep        1.jpg
                     2.jpg
您可以用一种简单的方法实现这一点,只需检查文件夹名称是否和同一数组中的push文件相同

我假设您在mysql响应中有这个对象数组

$mysql_response = Array ( 

[0] => stdClass Object ( 
        [folder_name] => tep 
        [file_name] => 1.jpg 
        [owner] => dulay 
        [path] => dulay )
[1] => stdClass Object ( 
        [folder_name] => tep 
        [file_name] => 2.jpg 
        [owner] => dulay 
        [path] => dulay ) 
);
PHP代码实现:

<?php

$filefolders = array();
foreach($mysql_response as $key => $fileObject){
     $filefolders[$fileObject->folder_name][] = $fileObject->file_name;
}

?>

文件夹和每个文件夹中的所有文件的HTML列表

<table>
<tr><th>Folder Name</th><th>File Name</th></tr>
<?php foreach($filefolders as $folder => $file){ ?> 
<tr>
  <td><?php echo $folder; ?></td>
  <td><?php echo $file; ?></td> 
</tr>
<?php } ?>

文件夹名文件名

复制了什么值。非常不清楚您的实际问题是什么请添加所需的输出。这样我们才能更好地理解。我已经添加了我想要的输出。我对输出的第二部分感到更加困惑。数组中是否有更多数据。请张贴适当的数据。这样我们就可以知道您真正想要实现的目标。您的结果集是否按文件夹名称排序?文件名甚至与文件夹名称重复。我是认真的reversed@JonasDulay请澄清你想要什么。编辑您的问题以反映所需的输出。起初可以,但当我在文件夹中添加新值时,它会变成这样@JonasDulay查看我的笔记并检查您查询中的问题。我不知道如何排序:(