2016-09-15 55 views
-2

我想檢查文件擴展名。爲此我創建了一個函數,但它沒有返回任何值。我真的不知道我錯在哪裏。下面是代碼:從我在哪裏調用這個函數自定義函數不返回一個字符串值在php

function checkType($name){ 
     $farray = explode('.',$name); 
     $fname = trim($farray[0]); 
     $fext = trim($farray[1]); 
     echo $fext; 
     return $fext; 
    } 

代碼是:

$filename = "IMG_3552.JPG"; 
echo $filename; 
checkType($filename); 
echo "File Extension is : ". $fext; 

上運行以下是呼應: IMG_3552.JPG

文件擴展名是:

請幫忙??

+0

你不存儲返回值'$ fext'任何東西。如果你想讓你的最後一個回聲工作,你需要'$ fext = checkType($ filename);'。函數中的$ fext只存在於你的函數中,沒有其他地方存在。 –

+1

爲什麼不簡單地使用'pathinfo($ name,PATHINO_EXTENSION)' – RamRaider

回答

0

您正在嘗試訪問功能範圍內的變量。

您正在從函數返回值而不是變量本身,因此函數是值。

這就是你應該做的。

$filename = "IMG_3552.JPG"; 
echo $filename; 
$fext = checkType($filename); 
echo "File Extension is : ". $fext; 

您也可以檢索使用PATHINFO_EXTENSION這樣一個文件的extensiton ...

function checkType($name){ 
     $fext = pathinfo($name, PATHINFO_EXTENSION); 
     return $fext; 
    } 
0

你的函數返回一個值。

您必須在使用該變量之前將該返回值捕獲到變量中。由於$fext僅在您的功能中可用。

如果你這樣做,

$fext = checkType($filename); 
echo "File Extension is : ". $fext; 

它應該工作。

+0

非常感謝您提供解決方案並解釋解決方案。 – Ratan

0

你有function計算的擴展名,但function內的$fext變量是本地的,因此在您嘗試使用它,它不會在外面function存在。爲了能夠使用它,返回值和初始化,就像這樣:

function checktype($name){ 
    return pathinfo($name, PATHINFO_EXTENSION); 
} 

$name='IMG_3552.JPG'; 
$fext=checktype($name); 
0

試試這個

<?php 
function checkType($name){ 
     $farray = explode('.',$name); 
     $fname = trim($farray[0]); 
     $fext = trim($farray[1]); 
     echo $fext; 
     return $fext; 
} 
$filename = "IMG_3552.JPG"; 
echo $filename; 
$fext = checkType($filename); 
echo "File Extension is : ". $fext; 
?> 
0

你的變量$ FEXT是一個範圍變量,它是不是你的函數外使用。嘗試在任何其他變量中獲取函數的返回值並記下它。

$filename = "IMG_3552.JPG"; 
$result = checkType($filename); 
echo "Result: " . $result; 

還有一件事我想清楚,爲什麼你不能使用pathinfo來獲得文件擴展名?當你完成代碼時,假設你有這樣一個用點(。)命名的文件,那麼你的邏輯將不起作用。 例如假設你有一個名爲:'IMG.3552.jpg'的文件,比你使用爆炸並且使用結果的第一個關鍵字的代碼不工作。所以它會給你3552而不是JPG。

我更喜歡使用

$ext = pathinfo($filename, PATHINFO_EXTENSION); 
相關問題