创建一个函数来处理许多变量


Creating a function to act on many variables

php-noob试图创建一个函数,但在网上找不到解决我困惑的资源。它来了;

我想创建一个使用变量名的函数,例如

盗贼的智慧(4)

并将其转换为

thiefswit.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。

谢谢!

您需要保存函数的输出:

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

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

$mod = convertImage($mod);

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

function convertImage(&$string) {...}
convertImage($mod); // $mod will point to a new string after the call
function convertImage(&$string) {
$string = strtolower(preg_replace("/[^a-zA-Z]+/", "", $string));
}

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

已编辑以允许通过引用

您不会在任何位置分配变量值。为了获得实际结果,您需要将函数返回值给一个变量,如下所示:

$mod = convertImage($mod);

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

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

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