0

php noob 在这里尝试创建一个函数,但在网络上找不到可以消除我困惑的资源。来了;

我想创建一个带有变量名的函数,例如

小偷的智慧 (4)

并将其转换为

小偷.jpg

到目前为止,这是我 加载此代码以测试我的功能的内容

require_once 'functions.php';

$mod = "Thief's Wit (4)";
convertImage($mod);
echo $mod;
?>

此代码是实际功能

function convertImage($string)
{
$string = preg_replace('/\s+/', '', $string);
$string = str_replace("'", "", $string);
$stringlength = strlen($string);
substr ($string, 0, ($stringlength-4));
$string = strtolower ($string);
$string = "$string" . ".jpg";
return $string;
}
?>

字符串的格式将始终为

在此命名 (4)

这就是为什么我减去长度 4。

当我运行这个函数时,它会回显原始字符串。

这里有什么帮助吗?我是 PHP 新手,不太了解

a) 'return' 在函数末尾做了什么和 b) 函数本身是否知道将“$string”替换为您告诉它在另一个文件中执行的变量?在这种情况下,$mod。

谢谢!

4

5 回答 5

2

您需要保存函数的输出:

$mod = "Thief's Wit (4)";
$mod = convertImage($mod);  // save the return value to $mod variable
echo $mod;

函数的返回值是调用函数得到的值。所以convertImage($mod)会有你返回的值。此时,您需要将结果存储到一个变量中,您可以这样做$mod = convertImage($mod);

另一种方法是“通过引用传递”,修改函数的参数将修改变量本身。

function convertImage(&$string) // use &$string to pass by reference
{
  $string = preg_replace('/\s+/', '', $string);
  $string = str_replace("'", "", $string);
  $stringlength = strlen($string);
  substr ($string, 0, ($stringlength-4));
  $string = strtolower ($string);
  $string = "$string" . ".jpg";
  //return $string;  this won't be needed anymore
}

...

$mod = "Thief's Wit (4)";
convertImage($mod);
echo $mod;
于 2013-07-30T00:10:36.847 回答
2

您必须返回您创建的新字符串

$mod = convertImage($mod);

或者通过引用传递,这意味着该函数convertImage正在使用与其调用者相同的对传入字符串的引用

function convertImage(&$string) {...}
convertImage($mod); // $mod will point to a new string after the call
于 2013-07-30T00:11:37.093 回答
1
function convertImage(&$string) {
$string = strtolower(preg_replace("/[^a-zA-Z]+/", "", $string));
}

应该做你需要的一切 - 它会去除任何标点符号和数字等,并使其小写。

编辑以允许通过引用传递

于 2013-07-30T00:12:21.220 回答
0

您没有在任何地方分配变量值。要获得实际结果,您需要将函数返回值返回给变量,如下所示:

$mod = convertImage($mod);

一旦实际的函数输出存储在变量中,您就可以在任何地方随意使用它。

演示:http ://codepad.org/naFB74K6

于 2013-07-30T00:13:00.333 回答
0
<?php
    function convertImage(&$string)
    {
        $string = preg_replace('/\s+/', '', $string);       //Thief'sWit(4)
        $string = str_replace("'", "", $string);            //ThiefsWit(4)
        $string = substr($string, 0, strlen($string)-3);    //ThiefsWit
        $string = strtolower($string);                      //thiefswit
        return $string.".jpg";
    }
    $mod = "Thief's Wit (4)";
    convertImage($mod);
    echo $mod;
?>
于 2013-07-30T00:14:48.523 回答