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


Custom function not returning a string value in 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

文件扩展名:

请帮忙??

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

你从函数返回一个值,而不是变量本身,所以函数就是这个值。

这是你应该做的。

$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;
    }

你的函数返回一个值。

您必须在使用变量之前捕获该返回值。因为$fext只在你的函数中可用。

如果有,

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

试试这个

<?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; 
?>

变量$ text是一个作用域变量,不能在函数之外使用。试着得到函数在其他变量中的返回值,并把它写下来。

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

还有一件事我想澄清,为什么你不能使用pathinfo来获取文件扩展名?当您编写代码时,假设您有这样一个文件,该文件以dot(.)命名,那么您的逻辑将无法工作。例如,假设你有一个名为:'IMG.3552.jpg'的文件,而你的代码不工作,因为你使用爆炸和使用1'键的结果。所以它会给你3552而不是jpg。

我更喜欢用

$ext = pathinfo($filename, PATHINFO_EXTENSION);

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

function checktype( $name ){
    return pathinfo( $name, PATHINFO_EXTENSION );
}
$name='IMG_3552.JPG';
$fext=checktype( $name );