2013-07-10 64 views
-1
<?php 
$imgdir = 'img/'; 
$allowed_types = array('png','jpg','jpeg','gif'); //Allowed types of files 
$dimg = opendir($imgdir);//Open directory 
while($imgfile = readdir($dimg)) 
{ 
//please explain this part!! 
if(in_array(strtolower(substr($imgfile,-3)),$allowed_types) OR 
    in_array(strtolower(substr($imgfile,-4)),$allowed_types)) 
{$a_img[] = $imgfile;} 
} 

$totimg = count($a_img); 
for($x=0; $x < $totimg; $x++){echo "<li><img src='" . $imgdir . $a_img[$x] . "'/></li>" 
;}?> 

我明白,這就像babysteps,但我的問題是: !請幫忙!謝謝!請解釋這個PHP substr代碼總共初學者

回答

0

讓我解釋給你在寶寶語言如:d

SUBSTR需要兩個參數,一個字符串和一個數字。字符串是文本或字符,如文件名等,數字是你想要的字符數。

如果數字是一個正數,那麼它會從左側取字符,如果數字是負數,那麼它將從右側取數。在您的代碼:

substr($imgfile,-3) // takes three characters from left 

這意味着,採取圖像文件名,這是文件的擴展名的最後三個字符,並

substr($imgfile,-4) // takes four characters from right side 

手段採取的最後四個字符。

在你允許類型數組:

$allowed_types = array('png','jpg','jpeg','gif'); 

您有三個字符的擴展和一個四個字符的擴展,所以這兩個SUBSTR用於那些目的。

我希望我用簡單的詞語來解釋它。

謝謝

+0

是的!寶貝語言非常受歡迎! :) 非常感謝!我剛開始學習PHP,有時覺得很愚蠢!但我會變得更好!非常感謝你! – Kristine

+0

事實上,substr正在接受3個參數。 (字符串,開始,長度) –

+0

歡迎您。嘗試閱讀一本書,比如24小時自學PHP,或者其他任何基本的好書。另外琳達在PHP視頻也很好。 –

2

它檢查文件名的最後3個字符然後最後4個字符以獲取擴展名並查看它是否在允許的類型數組內。

但是,使用pathinfo()代替它可能會更好。 http://php.net/manual/en/function.pathinfo.php

$path_parts = pathinfo($imgfile); 
if(in_array(strtolower($path_parts['extension']),$allowed_types)) { 
    $a_img[] = $imgfile; 
} 
+0

謝謝! 我想瘋狂理解PHP!你們真的幫助! – Kristine

0

substr($imgfile,-3);等於substr($imgfile, strlen($imgfile)-4);

這意味着您只能收到字符串的最後3個字符。 在這種情況下,作者首先檢查最後3個字符,然後檢查最後4個字符,看它是否是允許的擴展名。

再次進一步信息檢查文檔:string substr (string $string , int $start [, int $length ])

+0

因此,它正在檢查擴展是否在允許的類型數組中? – Kristine

+0

非常感謝你! – Kristine

+1

是的,你是對的。但是使用'explode(「。」,$ imgfile)'或'pathinfo()'就好像@Pitchinnate所說的那樣。 –