2017-07-15 13 views
0

我正在製作一個腳本,它應該對文件夾進行排序並在網上以行和列顯示它們。它應該是4列,並繼續下去,直到找不到更多的文件夾。除了那個魔法部分,它將行和列中的對象排序,我得到了一切。我的想法是,我做了兩個變量:$hor(列)$ver(行),然後我使用CSS來放置腳本正在製作的對象。有沒有人有如何處理這個想法? JavaScript是不是一種選擇,由於要求如何排序由php生成的html對象

這是迄今爲止我的腳本:

<?php 


error_reporting(E_ALL); 
ini_set('display_errors', 1); 


$directory = '/path/to/directory'; 
$scanned = array_diff(scandir($directory), array('..', '.')); 
$count = count($scanned); 
echo $count; 

for ($i = 2; $i <= $count + 1; $i++) { 
    $x = $i - 2; 

    // Magic code that sorts into horizontal and vertical numbers 

    echo '<div id="' . $x . '" class="' . $hor . ' ' . $ver . '"><a href="/' . $scanned[ $i ] . '"><div class="inner"><p>' . $scanned[ $i ] . '</p></div></a></div>'; 
} 

?> 
+1

你至少應該解釋一下你想如何分佈在行和列中的元素:多少列?一個固定的數額,或者動態確定的東西?先從左到右排序,然後從上到下,或從上到下排序,然後從左到右排序? – trincot

+0

是的,我編輯了這個問題 – cbh1608

+0

https://www.google.com/search?q=sortable.js – mplungjan

回答

1

如果我對你說的話,這可能是你試圖達到的目標。

init計數器告訴循環在數組中它應該從哪開始,並且增量計數器告訴循環有多少條跳過。您可以在任何時候通過添加/刪除循環來更改列的數量,並在所有循環中更改遞增計數器。當添加了循環,你必須通過1

爲給營養不良的人口增加初始化計數器的值(INIT計數器;測試計數器;增加計數器)

要獲得$ver$hor我們使用的是init計數器來計算位置。

$directory = "/path/to/directory"; 
    $scanned = array_diff(scandir($directory), array("..", ".")); 
    $count = count($scanned); 

    for ($i = 2; $i <= $count + 1; $i += 4) { 
     $x = $i - 2; 
     $v = $i + 2; 
     $ver = $v/4; 
     $hor = 1; 
     echo "<div id=\"" . $x . "\" class=\"ver" . $ver . " hor" . $hor . "\"><a href=\"/" . $scanned[ $i ] . "\"><div class=\"inner\"><p>" . $scanned[ $i ] . "</p></div></a></div>"; 
    } 

    for ($i = 3; $i <= $count + 1; $i += 4) { 
     $x = $i - 2; 
     $v = $i + 1; 
     $ver = $v/4; 
     $hor = 2; 
     echo "<div id=\"" . $x . "\" class=\"ver" . $ver . " hor" . $hor . "\"><a href=\"/" . $scanned[ $i ] . "\"><div class=\"inner\"><p>" . $scanned[ $i ] . "</p></div></a></div>"; 
    } 

    for ($i = 4; $i <= $count + 1; $i += 4) { 
     $x = $i - 2; 
     $v = $i; 
     $ver = $v/4; 
     $hor = 3; 
     echo "<div id=\"" . $x . "\" class=\"ver" . $ver . " hor" . $hor . "\"><a href=\"/" . $scanned[ $i ] . "\"><div class=\"inner\"><p>" . $scanned[ $i ] . "</p></div></a></div>"; 
    } 

    for ($i = 5; $i <= $count + 1; $i += 4) { 
     $x = $i - 2; 
     $v = $i - 1; 
     $ver = $v/4; 
     $hor = 4; 
     echo "<div id=\"" . $x . "\" class=\"ver" . $ver . " hor" . $hor . "\"><a href=\"/" . $scanned[ $i ] . "\"><div class=\"inner\"><p>" . $scanned[ $i ] . "</p></div></a></div>"; 
    } 
0

使用SCANDIR();對於以數組形式返回文件的目錄,然後使用foreach循環顯示每個文件作爲表格單元格使用計數器結束行,如果它是4列的話。

$files=scandir($directory); 
$i=0; 
echo "<table>"; 
echo"<tr>"; 
foreach ($files as $file){ 
echo "<td>".$file."</td>"; 
$i++; 
if(($i%4)==0){ 
echo"</tr>"; 
} 
} 
if(($i%4)==3) echo "<td></td><td></td><td></td></tr>"; 
if(($i%4)==2) echo "<td></td><<td></td></tr>"; 
if(($i%4)==1) echo "<td></td></tr>"; 
echo "</table>"; 
+0

您能解釋一下您的答案嗎? – cbh1608