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"
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"
ほとんどのPHPの関数は、その引数の値を変更しないでください。これはすべてではないにしてもほとんどの場合に適用されますstring functions。
strrev()
のドキュメントとしてそれを説明します
文字列strrev(文字列$文字列)
これは、関数が($string
という名前の)文字列引数を受け取り、文字列を返すことを意味します。それは(変数、定数または文字列リテラル)は、引数として渡され、それを元に変更することはできません(定数やリテラルは、とにかく変更することはできません)文字列のコピーを受け取ります。
引数の1つの値を変更できるようにするために、関数がpassed by reference取得する必要があります。リファレンスによって値が渡される引数は、関数のドキュメントに参照記号(&
)を使用して記述されています。
例えば、配列関数sort()
のように記載されている:
BOOLソート(配列& $配列[、INT $ sort_flags = SORT_REGULAR])
符号に注意してください(&
)を最初の引数($array
)の前に置きます。この関数は、$array
の値を変更します。
(第二引数($sort_flags
周りの角括弧)それがオプションであることを伝えます。)
strrevメソッドは、入力パラメータを変更しません。
これは仕様です、入力VARを変更することなく、逆にチェーンを返します。
、それは変更することがあると言う誰ですか?の[ 'strrev()'](http://php.net/manual/en/function.strrev.php)明らかに、それは別の文字列(およびない参照することにより)、文字列を取得し、返す言う(逆のドキュメント入力文字列)。 strrev' *リターンは逆に文字列を* – axiac
'ので、代わりに文字列*を変更しません。* – deceze