2016-09-15 19 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内のあなたの$fext変数は、したがって、それはあなたがそれを使用しようとfunctionの外側には存在しません、ローカルで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; 

1ファイルの拡張子を取得するためにpathinfoを使用できないのはなぜですか?コードを実行したときに、dot(。)という名前のファイルがあると仮定すると、ロジックは機能しません。例: 「IMG.3552.jpg」という名前のファイルがあり、あなたのコードが爆発的に使用されていて、結果の1番目のキーを使用しているので、コードが機能していないとします。それで、それはjpgの代わりにu 3552を与えるでしょう。

私は

$ext = pathinfo($filename, PATHINFO_EXTENSION); 
関連する問題