2013-07-27 82 views
-2

爲什麼我們使用$ extension = end($ temp);在這個代碼中?這到底是什麼爲什麼我們使用end Function?

<?php 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& ($_FILES["file"]["size"] < 20000) 
&& in_array($extension, $allowedExts)) 
+2

http://php.net/manual/en/function.end.php – JimL

+2

它返回數組中的最後一項 – Ahmad

+0

爲什麼不簡單地使用[pathinfo()](http://www.php.net/手動/ en/function.pathinfo.php)與PATHINFO_EXTENSION參數,而不是爆炸()和結束()? (並注意文件名區分大小寫) –

回答

1

end()使數組的內部指針前進到最後一個元素,並返回其值。

它不只是返回值。它也需要一個&reference參數它是否也移動了內部數組指針。 end()之後沒有next()。只有current()reset()

1

爲馬里斯告訴你它得到的陣列,這在你的文件名的情況下,是文件擴展名的最後一個元素(或將是最時間)

中,如果檢查的最後一行擴展名是$ allowedExts之一。

但它是冗餘檢查,文件類型檢查befor。

相關問題