2016-09-15 129 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);