質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1384閲覧

PHPの変数は値渡しか参照渡しか。

peyoung

総合スコア122

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2014/09/16 08:53

PHPをはじめたばかりの初心者です。変数について疑問に思ったので、ここで質問しようと思いました。

PHPの変数においてなんですが、参照の仕方は値渡しと参照渡しのどちらになるのでしょうか。

どなたかご教示お願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

いちおう「値渡し」ということにはなってはいますが、変数の種類によって挙動は変わってきます。

普通の変数の場合、値渡しなので、呼び出された関数内で書き換えても呼び出し元には影響しません。

オブジェクトを渡した場合、「参照の値渡し」となります(PHP5では)。例えば、$paramという引数にオブジェクトが渡ってきた場合、$param='foo';としても、呼び出し元には影響しませんが、同じオブジェクトを指しているので、$param -> bar='hoge';のようにすると、呼び出し元でもオブジェクトが変化します

配列を渡した場合、PHPコードから見た動作は値渡しと同じですが、内部ではCopy on Writeという仕組みが働いているので、渡した瞬間ではなく、呼び出された側の関数で書き込もうとした瞬間にコピーが始まります(一切変更しなければそのままです)。

投稿2014/09/17 04:05

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

peyoung

2014/09/18 00:52

回答ありがとうございました!内部で何が起きてるのか少し分かってきました!ありがとうございました!
guest

0

PHPのドキュメンテーションによると、変数は値渡しになりますね。

デフォルトですと、引数は値が渡されます。
理由は、関数内の引数の値が変わっても関数外に影響を及ぼさないためです。

関数がその引数を変更できるようにするためには、変数を参照によって渡す必要があります。

引数を参照によって関数に渡すのであれば、引数名の先頭にアンパサンド(&)を追加することが必須となります。

以下に例を載せておきますね!

lang

1<?php 2function create_str(&$string){ 3 $string = '++++"'.$string.'"++++++'; 4} 5$test_str = 'これはテストです。'; 6create_str($test_str); 7echo $test_str; 8// 出力:++++"これはテストです。"++++++ 9?>

投稿2014/09/17 02:30

hogehogehoge

総合スコア165

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問