如何组合将两个foreach循环合二为一

时间:2012-02-15 14:16:09

标签: php arrays

到目前为止,这是我的代码,现在我想结合我能做的事情吗?

<table>
            <tr>

                <th>Imported Files</th> 
                <th>Report Files</th> 
            </tr>
<?php

    $dir = str_replace("/var/www/13_Feb/subscriber-files/","","/var/www/13_Feb/subscriber-files/u*.[cC][sS][vV]");
    $dir2 = str_replace("/var/www/13_Feb/subscriber-files/","","/var/www/13_Feb/subscriber-files/r*.[cC][sS][vV]");



    foreach(glob($dir) as $file)  {
            echo "<tr>";
            echo "<td>". $file."</td>";
            }

            foreach(glob($dir2) as $file)  {
            echo "<td>". $file."</td>";
            }
            echo "</tr>";

?>
</table>

我想像这样打印

            echo "<tr>";
    echo "<td>". $file1."</td>";
    echo "<td>". $file2."</td>";
    }
    echo "</tr>";

即在同一个td我能做什么帮助我

update:-

我想将其打印到td

$dir = str_replace("/var/www/13_Feb/subscriber-files/","","/var/www/13_Feb/subscriber-files/u*.[cC][sS][vV]");
$dir2 = str_replace("/var/www/13_Feb/subscriber-files/","","/var/www/13_Feb/subscriber-files/r*.[cC][sS][vV]");

4 个答案:

答案 0 :(得分:0)

$line .= "<tr>";
foreach(glob($dir) as $file)  {     
    $line .= "<td>". $file."</td>";
}
foreach(glob($dir2) as $file)  {
    $line .= "<td>". $file."</td>";
}
$line .= "</tr>";

echo $line;

答案 1 :(得分:0)

这个处理不同大小的文件列表。

另外,您可以在同一个表格中显示两列以上的“文件列表”。

// retrieve data

$dirs = array(glob($dir), glob($dir2));

// display

$max_files = max(array_map('count', $dirs));
$count_dirs = count($dirs);

echo '<table>';

for($i = 0; $i < $max_files; $i++)
{
  echo '<tr>';
  for($d = 0; $d < $count_dirs; $d++)
  {
    $strFile = (isset($dirs[$d][$i]) ? $dirs[$d][$i] : '[NO FILE]');
    echo '<td>'.$strFile.'</td>';
  }
  echo '</tr>';
}

echo '</table>';

答案 2 :(得分:0)

如果它们应该组合在一起并且两者的大小相同,那么这可能是一个解决方案(未经测试)

$dir1_files = glob($dir);
$dir2_files = glob($dir2);

for ($i =0; $i < count($dir1_files); $i++)
{
    echo "<tr>";
    printf("<td>%s</td>", $dir1_files[$i]);
    printf("<td>%s</td>", $dir2_files[$i]);
    echo "</tr>";
}

答案 3 :(得分:0)

PHP 5.3+对此有一个MultipleIterator,结合GlobIterator你可以得到这样的解决方案:

$iterator = new MultipleIterator();
$iterator->attachIterator(new GlobIterator($dir);
$iterator->attachIterator(new GlobIterator($dir2);
foreach ($iterator as $current) {
    echo "<tr>";
    echo "<td>". $current[0] ."</td>";
    echo "<td>". $current[1] ."</td>";
    echo "</tr>";
}

如果您有不同数量的文件并希望显示所有文件,则可以使用MultipleIterator::MIT_NEED_ANY标记:

$iterator = new MultipleIterator(MultipleIterator::MIT_NEED_ANY);
$iterator->attachIterator(new GlobIterator($dir);
$iterator->attachIterator(new GlobIterator($dir2);
foreach ($iterator as $current) {
    echo "<tr>";
    echo "<td>". (isset($current[0]) ? $current[0] : '&nbsp;') ."</td>";
    echo "<td>". (isset($current[1]) ? $current[1] : '&nbsp;') ."</td>";
    echo "</tr>";
}