2012-02-15 130 views
1

這是我的代碼到目前爲止,現在我想結合這個我能做什麼?如何結合兩個foreach循環合併爲一個

<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]"); 
+0

每個目錄中的文件數是否相同?你是說你想在dir2中的第一個文件旁邊的dir中顯示第一個文件嗎? – 2012-02-15 14:19:47

回答

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>'; 
+0

:)這裏是我的編碼http://pastebin.com/DQdiBarL – John 2012-02-15 14:39:51

+0

而且?我應該怎麼做? – 2012-02-15 15:07:39

+0

:)你的代碼在任何測試頁面都可以正常工作,但實際上並沒有與zend一起工作,當我替換str_replace之後,它也在zend中工作,我可以做任何建議??????????? – John 2012-02-15 15:16:01

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; 
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>"; 
} 
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>"; 
}