自定义函数不在php中返回字符串值

时间:2016-09-15 05:52:41

标签: 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

文件扩展名为:

请帮忙??

5 个答案:

答案 0 :(得分:0)

您正在尝试访问函数范围内的变量。

您正在从函数返回一个值而不是变量本身,因此该函数是值。

这就是你应该做的。

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

您也可以使用PATHINFO_EXTENSION这样的方式检索文件的扩展名......

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

答案 1 :(得分:0)

您的函数返回一个值。

在使用变量之前,必须将该返回值捕获到变量中。由于$fext仅适用于您的功能。

如果你这样做,

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

它应该有用。

答案 2 :(得分:0)

您有function来计算扩展名,但$fext中的function变量是本地的,因此它不会出现在您尝试的function之外用它。为了能够使用它,返回值并初始化它,如下所示:

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

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

答案 3 :(得分: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; 
?>

答案 4 :(得分:0)

您的变量$ fext是一个范围变量,在您的函数之外无法使用。尝试在任何其他变量中获取函数的返回值并记下它。

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

我想清楚一件事,为什么你不能使用pathinfo来获取文件扩展名?当您完成代码时,假设您有一个以dot(。)命名的文件,那么您的逻辑将无效。 例如假设您有一个名为:&#39; IMG.3552.jpg&#39;因为你使用explode并使用结果的1&#st;键而不是你的代码不起作用。所以它会给你3552而不是jpg。

我更喜欢使用

$ext = pathinfo($filename, PATHINFO_EXTENSION);