为什么$ input_word的值不会成为$ output_word的值?

时间:2017-10-02 08:44:52

标签: php

使用Epicodus的教程。想知道为什么变量$ input_word的值不会因为strrev($ input_word)而改变;

$input_word = "stressed";
> $output_word = strrev($input_word);
> echo $input_word . " reversed is " . $output_word;
"stressed reversed is desserts"

2 个答案:

答案 0 :(得分:3)

strrev方法不会修改输入参数。

它返回反向链而不修改输入var,这是设计的。

答案 1 :(得分:2)

大多数PHP函数不会更改其参数的值。这也适用于大多数string functions

strrev()的文档将其描述为:

  

string strrev(string $ string)

这意味着该函数接收一个字符串参数(名为$string)并返回一个字符串。它接收作为参数传递的字符串(变量,常量或字符串文字)的副本,并且它无法更改原始字符(无论如何都不能更改常量和文字)。

为了能够更改其中一个参数的值,函数需要获取它passed by reference。通过引用传递其值的参数在函数的文档中使用引用符号(&)进行了描述。

例如,数组函数sort()被描述为:

  

bool sort(array& $ array [,int $ sort_flags = SORT_REGULAR])

请注意第一个参数(&)前面的参考号($array)。此函数修改$array

的值

(第二个参数($sort_flags)周围的方括号表示它是可选的。)