2013-12-18 14 views
0

我無法弄清楚什麼是存儲在數組中......任何人都可以請解釋它。請以簡單的方式解釋它。謝謝大家 我已經從網絡和完整的代碼試了一下這裏這段代碼在php中做什麼目錄

<?php 
$dhandle = opendir('.'); 
$files = array(); 

if ($dhandle) { 
    while (false !== ($fname = readdir($dhandle))) { 
     if (($fname != '.') && ($fname != '..') && ($fname != basename($_SERVER['PHP_SELF']))) { 
      // this if condition is confusing me 
      $files[] = (is_dir("./$fname")) ? "(Dir) {$fname}" : $fname; 
      // and the above line too 
     } 
    } 
    closedir($dhandle); 
} 

echo "<select name=\"file\">\n"; 
foreach($files as $fname) 
{ 
    echo "<option>{$fname}</option>\n"; 
} 
echo "</select>\n"; 
?> 

這裏是我不明白

$files[] = (is_dir("./$fname")) ? "(Dir) {$fname}" : $fname; 
+0

'?'是三元運算符。 http://php.net/ternary –

回答

2

這是一個三元語句代碼行,等於:

if(is_dir("./$fname")){ 
    $files[] = "(Dir) {$fname}"; 
} else { 
    $files[] = $fname; 
} 

這意味着基本上,如果變量包含目錄,則將字符串(Dir)添加到前面,否則只使用該變量。

2

這是三元操作者。

$variable = (condition) ? true : false; 

是短期的

if (condition) { 
    $variable = true; 
} else { 
    $variable = false; 
} 
0

.是到當前目錄的引用(在Linux中PWD)

..是這一個之前的目錄,在路徑

if (($fname != '.') && ($fname != '..') && ($fname != basename($_SERVER['PHP_SELF'])))表示:

如果正在檢查文件名:
a。是不是當前目錄的名稱,並且
b。不是父目錄的名稱,並且
c。這不是文件(腳本本身)

$files[] = (is_dir("./$fname")) ? "(Dir) {$fname}" : $fname;表示:

  1. 添加到命名$files無論是
  2. IF被檢查的文件,該陣列是一個目錄,添加「(DIR)文件名「
  3. ELSE只需添加 」文件名「