2017-10-02 7 views
0

Epicodusによるチュートリアルの作業。なぜstrrev($ input_word)のために変数$ input_wordの値が変化しないのだろうか。

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

、それは変更することがあると言う誰ですか?の[ 'strrev()'](http://php.net/manual/en/function.strrev.php)明らかに、それは別の文字列(およびない参照することにより)、文字列を取得し、返す言う(逆のドキュメント入力文字列)。 strrev' *リターンは逆に文字列を* – axiac

+0

'ので、代わりに文字列*を変更しません。* – deceze

答えて

2

ほとんどのPHPの関数は、その引数の値を変更しないでください。これはすべてではないにしてもほとんどの場合に適用されますstring functions

strrev()のドキュメントとしてそれを説明します

文字列strrev(文字列$文字列)

これは、関数が($stringという名前の)文字列引数を受け取り、文字列を返すことを意味します。それは(変数、定数または文字列リテラル)は、引数として渡され、それを元に変更することはできません(定数やリテラルは、とにかく変更することはできません)文字列のコピーを受け取ります。

引数の1つの値を変更できるようにするために、関数がpassed by reference取得する必要があります。リファレンスによって値が渡される引数は、関数のドキュメントに参照記号(&)を使用して記述されています。

例えば、配列関数sort()のように記載されている:

BOOLソート(配列& $配列[、INT $ sort_flags = SORT_REGULAR])

符号に注意してください(& )を最初の引数($array)の前に置きます。この関数は、$arrayの値を変更します。

(第二引数($sort_flags周りの角括弧)それがオプションであることを伝えます。)

3

strrevメソッドは、入力パラメータを変更しません。

これは仕様です、入力VARを変更することなく、逆にチェーンを返します。

関連する問題