2014-12-04 56 views
0

我創造PHP上載功能,但我得到當我試圖上傳此消息:嚴格標準:只有變量應該通過引用傳遞?

嚴格的標準:只有變量應參考管線72

我傳遞我不確定我做錯了什麼,有人可以幫忙嗎?

的線條看起來像:

if(isset($_FILES['image'])){ 
     $errors= array(); 
     $file_name = $_FILES['image']['name']; 
     $file_size =$_FILES['image']['size']; 
     $file_tmp =$_FILES['image']['tmp_name']; 
     $file_type=$_FILES['image']['type']; 
     $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); // LINE 72 
     $extensions = array("jpeg","jpg","png");   
     if(in_array($file_ext,$extensions)=== false){ 
     echo "Filtypen skal være JPEG, JPG eller PNG."; 
     } else { 
      move_uploaded_file($file_tmp,"../img/portfolio/".$file_name); 
     } 
+2

使用'$ foo = end(...); $ ext = strtolower($ foo)'代替。 – 2014-12-04 20:11:03

+0

哪一個是72? – Forien 2014-12-04 20:11:14

+0

有趣的是,當用數字鍵創建一個沒有特定順序的數組時,end()仍然只返回最後一個創建的值。所以,如果你有這樣的事情: <?php $ a = array(); $ a [1] = 1; $ a [0] = 0; echo end($ a); ?> 這將打印「0」。試試這個$ str = explode('。',$ _ FILES ['image'] ['name']); $ str = end($ str); $ file_ext =用strtolower($ STR); – Andrii 2014-12-04 20:23:10

回答

3

爲什麼你得到這個錯誤的原因是end功能。如果仔細查看PHP文檔,您會看到該末尾帶有一個由&符號暗示的引用。 PHP只能引用變量,但不能實時傳值。

爲了克服這一點,你就必須做到以下幾點:

$exploded = explode('.',$_FILES['image']['name']); 
$last_element = end($exploded); 
$file_ext=strtolower($last_element); 

或短一點

$exploded = explode('.',$_FILES['image']['name']); 
$file_ext=strtolower(end($exploded)); 

讓我解釋一下這個遠一點的位置: 雖然end的返回值函數是數組的最後一個元素,它在內部將指針指向數組的末尾。如果你現在打電話$elem = current($exploded)你也會檢索最後一個元素。

+0

請考慮問這是一個自己的問題,定義問題是什麼以及你想要達到什麼以及你已經嘗試過什麼。這使得StackOverflow的結構保持乾淨。 – androidavid 2014-12-04 20:36:04

+0

好主意,生病了:) – Mathias 2014-12-04 20:38:13

相關問題