Php 创建一个作用于多个变量的函数

Php 创建一个作用于多个变量的函数,php,Php,这里的php noob试图创建一个函数,但无法在web上找到消除我困惑的资源。就这样 例如,我想创建一个采用变量名的函数 小偷的智慧(4) 并将其转换为 thiefswit.jpg 到目前为止,这是我所拥有的 加载此代码是为了测试我的功能 require_once 'functions.php'; $mod = "Thief's Wit (4)"; convertImage($mod); echo $mod; ?> 此代码是实际功能 require_once 'functions.ph

这里的php noob试图创建一个函数,但无法在web上找到消除我困惑的资源。就这样

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

小偷的智慧(4)

并将其转换为

thiefswit.jpg

到目前为止,这是我所拥有的 加载此代码是为了测试我的功能
require_once 'functions.php';

$mod = "Thief's Wit (4)";
convertImage($mod);
echo $mod;
?>
此代码是实际功能

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新手,不太懂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 = "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);
或pass by reference,这意味着函数
convertImage
使用与其调用者相同的对传入字符串的引用

function convertImage(&$string) {...}
convertImage($mod); // $mod will point to a new string after the call

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

$mod = convertImage($mod);
或pass by reference,这意味着函数
convertImage
使用与其调用者相同的对传入字符串的引用

function convertImage(&$string) {...}
convertImage($mod); // $mod will point to a new string after the call
应该做所有你需要的-它将剥离任何标点和数字等,并使其小写

编辑以允许通过引用传递

应该做所有你需要的-它将剥离任何标点和数字等,并使其小写


编辑为允许通过引用传递

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

$mod = convertImage($mod);
一旦实际的函数输出存储在变量中,您就可以在任何地方使用它


演示:

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

$mod = convertImage($mod);
一旦实际的函数输出存储在变量中,您就可以在任何地方使用它


演示:

您没有分配返回值。(您也可以使用一个preg_替换来删除所有非字母。)可能的重复项您没有指定返回值。(你也可以用一个preg_替换掉所有非字母。)sweet的可能副本,谢谢!我还需要替换,以去掉“(4)”。不过这很有帮助!这对你来说应该也可以去掉,因为“(4)”完全是由非字母字符sweet组成的,谢谢!我还需要替换,以去掉“(4)”。不过这很有帮助!这对你来说也应该消除,因为“(4)”完全是由非字母字符组成的。你可以修改它们,这叫做路过reference@Alfie是的,字符串是可变的,我错了两次@Alfie嘿,我随时都会投一张有解释的否决票,从另一方面来说,我知道,没有解释的否决票真的让我恼火:)@JuanMendes我完全同意——正如你所知道的,我不是投否决票的人:)@Alfie即使是,这是应得的你可以修改它们,这叫做“擦肩而过”reference@Alfie对字符串是可变的,我错了两次@阿尔菲,嘿,我随时都会投反对票并解释原因,从另一方面来说,我知道,没有解释的反对票真的让我很恼火:)@JuanMendes我完全同意——正如你所知,我不是投反对票的人:)@Alfie即使是这样,这也是应得的