● 3_012-引数
引数を先ほど説明しましたが参照で渡す事ができます。
前の関数の出力は邪魔ですのでコメント・アウトします。例文を追加しますので区切り線を入れます。
| <?php
/* このプログラムは演習用です。
コメントの練習です。 */
// ここから演習を開始します。
$name_1[] = 1;
$name_1[] = 2;
$name_1[] = 3;
$name_1[] = 4;
$name_1[] = 5;
$name_2[] = 1;
$name_2[] = 2;
$name_2[] = 3;
$name_2[] = 4;
$name_2[] = 5;
$name[] = $name_2;
$name[] = $name_1;
$f_name = &$name; // 参照による代入
// print_r($name); // 配列の中を調べる
$kakaku = 10000; // 10000を代入
$kakaku_keta = number_format($kakaku); // 10000を桁処理
// print $kakaku_keta;
// kakaku_keisan( $kakaku );
// 定義した関数を実行
function kakaku_keisan ( $kakaku ){
// 関数を定義
$kakaku_2 = $kakaku * 2;
print $kakaku_2;
}
//---------------------------引数を参照渡しする-------------------------
$foo = '仕事';
function hiki_2 ( &$foo
){
$foo
= '遊び';
print $foo;
}
hiki_2 ( $foo
);
?> |
上記は「遊び」と出力されます。
詳細は下記の正規マニュアルに記載されせています。
関数の引数
● 3_013-変数のスコープ
スコープとは「有効範囲」です。
変数に値が代入された時に、それはどごまで有効なのかを示します。
| <?php
/* このプログラムは演習用です。
コメントの練習です。 */
// ここから演習を開始します。
$name_1[] = 1;
$name_1[] = 2;
$name_1[] = 3;
$name_1[] = 4;
$name_1[] = 5;
$name_2[] = 1;
$name_2[] = 2;
$name_2[] = 3;
$name_2[] = 4;
$name_2[] = 5;
$name[] = $name_2;
$name[] = $name_1;
$f_name = &$name; // 参照による代入
// print_r($name); // 配列の中を調べる
$kakaku = 10000; // 10000を代入
$kakaku_keta = number_format($kakaku); // 10000を桁処理
// print $kakaku_keta;
// kakaku_keisan( $kakaku );
// 定義した関数を実行
function kakaku_keisan ( $kakaku ){
// 関数を定義
$kakaku_2 = $kakaku * 2;
print $kakaku_2;
}
//---------------------------引数を参照渡しする-------------------------
$foo = '仕事';
function hiki_2 ( &$foo ){
$foo = '遊び';
print $foo;
}
// hiki_2 ( $foo
);
//---------------------------変数のスコープ-------------------------
$foo = '仕事';
function hiki_3 ( ){
print $foo;
}
hiki_3 ( $foo );
?> |
上の変数のスコーブは「仕事」と出力できません。変数$fooはユーザー定義関数hiki_3の中まで及ばないのです。
下記のようにユーザー定義関数内の変数が未定義というエラーが出ます。
Notice: Undefined variable: foo in C:\htdocs\enshu\index.php
on line 63
下記のようにユーザー定義関数内でグローバル変数$fooを参照すれば可能になります。
通常はこういう書き方はさませんが、処理内に書くより引数で渡したほうがコードが明解だからです。
| <?php
/* このプログラムは演習用です。
コメントの練習です。 */
// ここから演習を開始します。
$name_1[] = 1;
$name_1[] = 2;
$name_1[] = 3;
$name_1[] = 4;
$name_1[] = 5;
$name_2[] = 1;
$name_2[] = 2;
$name_2[] = 3;
$name_2[] = 4;
$name_2[] = 5;
$name[] = $name_2;
$name[] = $name_1;
$f_name = &$name; // 参照による代入
// print_r($name); // 配列の中を調べる
$kakaku = 10000; // 10000を代入
$kakaku_keta = number_format($kakaku); // 10000を桁処理
// print $kakaku_keta;
// kakaku_keisan( $kakaku );
// 定義した関数を実行
function kakaku_keisan ( $kakaku ){
// 関数を定義
$kakaku_2 = $kakaku * 2;
print $kakaku_2;
}
//---------------------------引数を参照渡しする-------------------------
$foo = '仕事';
function hiki_2 ( &$foo ){
$foo = '遊び';
print $foo;
}
// hiki_2 ( $foo );
//---------------------------変数のスコープ-------------------------
$foo = '仕事';
function hiki_3 ( ){
global $foo;
print $foo;
}
hiki_3 ( $foo );
?> |
ユーザー定義関数を含めて変数の有効範囲を意識しましょう。
正規マニュアルでは以下を参照して下さい。
変数のスコープ
● 3_014-演算子
演算子とは読んでごとく、演算する元になるものです。
計算、比較、その他色々あります。
実は既に演算子を使っています。
「=」は代入演算子です。
全ての演算子を長々と説明してもあまり意味がありません。それだけを覚えるよりも式の中で必要になりますからコードを書きながら調べ覚えていくのが実践的です。
下記の正規マニュアルを開いて見てください。
第
15章演算子
目次に、
演算子の優先順位
代数演算子
代入演算子
ビット演算子
比較演算子
エラー制御演算子
実行演算子
加算子/減算子
論理演算子
文字列演算子
配列演算子
型演算子
と、あります。これを流し読みする程度でけっこうです。なぜなら後の「制御構造」で式の一部として出てきますので。
制御構造でもう一度再確認して下さい。
戻る
|