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

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

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

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

Q&A

2回答

1382閲覧

PHPの参照

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2015/12/14 07:21

php

1 function func(&$num) 2 { 3 return $num; 4 } 5 6 $ex = 5; 7 $go = func($ex); 8 echo $go;

なぜこのように参照する必要があるのでしょうか?
&なしでもいいと思うのですが、利点は何でしょうか?

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

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

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

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

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

guest

回答2

0

php

1function func(&$num) 2 { 3 return $num; 4 }

この例ですと確かに、参照渡しである意味はありません。
参照渡しと値渡しで意味合いが変わってくるのは、関数内で引数を変化させた時です。

例えばhyper-drums-ko様の回答の上部分では、「引数$argに1を足す」という処理が入っています。
この時、値渡し hoge($arg) では関数の外で定義した$value1の値が1のままであるのに対し、
参照渡し fuga(&$arg) では関数の外で定義したはずの$value2の値が「$arg++;」の影響を受けて、2になっています。

これらをどう使い分けるかは、プログラミングの方針とかによるのだと思います。

投稿2016/01/07 17:36

wozniak385

総合スコア51

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

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

0

& を付けるとリファレンス渡しとなり、関数内で引数の値を変更することができます。

PHP

1function hoge($arg) 2{ 3 $arg++; 4 return $arg; 5} 6 7function fuga(&$arg) 8{ 9 $arg++; 10 return $arg; 11} 12 13$value1 = 1; 14echo hoge($value1); 15-> 2 16echo $value1; 17-> 1 18 19$value2 = 1; 20echo fuga($value2); 21-> 2 22echo $value2; 23-> 2 24

私はこんな感じでよく使います。

PHP

1$itemList = array( 2 array( 3 'name' => 'apple', 4 'price' => 30 5 ), 6 array( 7 'name' => 'banana', 8 'price' => 50 9 ), 10 array( 11 'name' => 'melon', 12 'price' => 5000 13 ) 14); 15 16foreach ($itemList as &$item) { 17 $item['is_cheap'] = $item['price'] < 1000; 18} 19 20print_r($itemList); 21-> array( 22 array( 23 'name' => 'apple', 24 'price' => 30, 25 'is_cheap' => true 26 ), 27 array( 28 'name' => 'banana', 29 'price' => 50, 30 'is_cheap' => true 31 ), 32 array( 33 'name' => 'melon', 34 'price' => 5000, 35 'is_cheap' => false 36 ) 37 )

投稿2015/12/14 07:33

編集2015/12/14 07:41
hyper-drums-ko

総合スコア736

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問