2.4 変数
変数とは、プログラムの実行中にいつでも変更できる量を指します。コード内で 1 つの変数のみを使用することも、複数の変数を変数に格納することもできます。待って。変数の値はプログラムの実行中に存在します。プログラムが終了すると、変数の値は失われます。先ほどの例でも変数を使用していますが、詳細な説明はありません。ここでは変数の作成方法と変数の参照方法を詳しく紹介します。
2.4.1 変数を作成する
PHP の変数は、変数の名前、関数の名前、または他のユーザーなど、さまざまなオブジェクトを識別する記号です。 -define オブジェクトの名前。 PHP では、識別子の命名は次の規則に従う必要があります:
l 識別子は 1 つ以上の文字で構成できますが、文字またはアンダースコアで始める必要があります。さらに、識別子は、文字、数字、アンダースコア文字、および 127 ~ 255 のその他の ASCII 文字のみで構成できます。 my_a、Ss、_value などの識別子名はすべて正当ですが、q^a や 4tt などの変数名は不正です。
l 識別子では大文字と小文字が区別されます。したがって、変数 $recipe は、変数 $Recipe、$rEciPe、または $recipeE とは異なります。
l 識別子は任意の長さにすることができます。これは、プログラマが名前を通じて識別子の目的を正確に説明できるため、有益です。
l 識別子名は、PHP の事前定義キーワードと同じにすることはできません。
変数を作成するプロセスでは、最初に変数を宣言してから、その変数に値を割り当てるのが良い習慣です。 PHP は弱い型指定言語であるため、変数を宣言するときに変数を明示的に宣言する必要はありません。PHP では、変数は実行時に型チェックされ、別の値に置き換えることができます。変数の値を指定するには、以下の変数を宣言し、その変数の値を別の型の値で置き換えてから、代入せずに変数を宣言します。具体的なコードは次のとおりです。 "Yound Tang";
$ what = 25;
$name;
PHP では、変数に値を代入する方法として、値の代入と参照の代入の 2 つの方法があります。値の代入は、代入式を通じて変数に値を直接コピーすることです。変数の宣言時に代入がない場合、その動作は NULL と同じになります。変数宣言時の代入はよく使われる変数の代入方法です。 使用例は以下の通りです。 echo "あなたの名前は:".$name."
";
echo "あなたの年齢は:".$age."
";
echo "あなたの性別は: ".$sex."
";
このコードを実行すると、実行結果は次のようになります:
あなたの名前: Tang Xiaoyang
あなたの年齢: 23歳
あなたの性別: 男性
PHP では、宣言された変数に値を直接割り当てることも、値を割り当てないこともできます。変数を使用して値を格納する必要がある場合、参照による代入とは、作成された変数が参照される変数と同じ内容を持つことを意味します。別の変数によって。したがって、複数の変数が同じ内容を参照している場合、それらのいずれかを変更すると、残りの変数に反映されます。参照の割り当ては、等号の後に & 記号を追加することで完了できます。参照割り当ての形式の例を以下に示します。
$value1="Hello World";
$value2=& $value1;
$value2="GoodBye";
echo $value1."
";
echo $value2."
”;
上記のコードでは、変数 value1 が作成され、値「Hello World」が割り当てられています。次のステートメントでは、変数 $value2 が参照割り当てを使用しています。つまり、value1 の値は次のとおりです。 value2 に割り当てられているため、この時点では、これら 2 つの変数はライフ コミュニティです。一方が変更されると、もう一方はその結果を表示します。
変数が宣言される場所によって、変数のスコープが決まります。PHP では、変数のスコープは、プログラムのどの部分が変数にアクセスできるか、どの部分がアクセスできないかを決定します。ローカル変数、関数パラメータ、グローバル変数、静的変数の 4 つのカテゴリ このセクションでは主にこれらの変数のスコープについて説明します。
1.ローカル変数
関数内で変数を宣言すると、その関数のローカル変数になります。つまり、その変数には関数内のメンバーのみがアクセスでき、関数外のメンバーは変数にアクセスできず、非表示になります。デフォルトでは、関数内のメンバーは関数の外で定義された変数 (いわゆるグローバル変数) にアクセスできません。ローカル変数は、グローバルにアクセス可能な変数が意図的または意図せずに変更される原因となる 1 ビットの副作用の可能性を排除するため、便利な場合があります。コード 2.13 に示すように、ローカル変数の使用例を作成してみましょう。
コード 2.13 ローカル変数の使用
$count =10;
function AddCount()
{
$count = 100;
$count = $count + $count;
echo $count;
echo "<br/>";
}
AddCount();
echo $count;
?>
执行代码2.13,执行结果如下所示:
200
10
有输出结果知,该段代码输出了两个不同的值,这是因为函数AddCount函数中的变量为局部变量,修改局部变量的值不会影响函数外部的任何值,函数中的变量在程序结束时被抛弃,所以全局变量值还是10。
2.函数参数
在PHP中,函数可以接受相应的参数,虽然这些参数是接受函数外部的值,但退出函数后就无法访问这些参数,在函数执行结束后,参数的值就会消失,和函数的执行有很大的关系。函数参数是在函数后面的括号内声明,下面使用该参数创建一个示例,该示例如代码2.14所示。
代码2.14 运用函数参数
function EchoNum($age,$class)
{
echo "你的年龄是:".$age."<br/>";
echo "所在班级:".$class;
}
EchoNum(18,"计算机技术与科学系08级5班");
?>
执行该段代码,执行结果如下所示:
你的年龄是:18
所在班级:计算机技术与科学系08级5班
函数参数也可以称为是局部变量,意味着这些参数只在函数内部起作用,在函数的外部不能访问这些变量,同样当函数执行结束时,变量同样也会撤销。
3.全局变量
全局变量可以在整个PHP程序中,任何地方访问,但是如果要修改一个全局变量,必须在修改该变量的函数中显式的声明为全局变量,在函数中显示声明全局变量很简单,只需在函数中使用global关键字声明就可以,下面创建一个使用全局变量的示例,具体讲解在函数中如何修改全局变量,该示例如代码2.15所示。
代码2.15 在函数中修改全局变量
function AddNum()
{
global $num;
$num = $num + $num ;
echo $num ;
}
$num = 100;
AddNum();
?>
执行代码2.15,执行结果如下所示:
200
如果不在$num前加global,该变量会被认为是局部变量,此时页面上显示的值为0;添加global后,就可以修改全局变量了,声明全局变量还有另外一种方法,那就是使用PHP的$GLOBALS数组,使用该数组和使用global的效果一样,下面创建一个使用$GLOBALS数组的示例,该示例如代码2.16所示。
代码2.16 使用$GLOBALS数组
function AddNum()
{
$GLOBALS['num'] =$GLOBALS['num']+$GLOBALS['num'] ;
echo "该值是:".$GLOBALS['num'] ;
}
$num = 100;
AddNum();
?>
执行代码2.16,执行结果如下所示:
该值是:200
| 在使用全局变量时,一定要注意,因为使用全局变量很容易发生意外。 |
4.静态变量
静态变量在两次调用函数之间其值不变,静态变量仅在局部函数域中声明,用关键字static可以声明一个静态变量。静态变量在函数退出时,不会丢失值,并且再次调用此函数时,还能保留值。下面创建一个使用静态变量的示例,该示例如代码2.17所示。
代码2.17 使用静态变量
function keepNum()
{
static $num =0;
$num ++;
echo "现在静态变量的值是:".$num;
echo "<br/>";
}
$num = 10;
echo "变量num的值是:".$num."
";
keepNum();
keepNum();
?>
执行代码2.17,执行结果如下所示:
变量num的值是:10
现在静态变量的值是:1
现在静态变量的值是:2
由代码2.17执行结果知,由于在函数中指明了变量为静态变量,因此在执行函数时保留了前面的值。
2.3.3 变量的变量
创建一个变量,需要该变量赋值,当然也可以引用赋值,有时候也需要使用该变量的内容作为变量名,也就是说这个变量存放在另一个变量中。定义变量的变量只需要在变量的前面再添加一个美元符号即可。下面创建一个示例,该示例代码如下所示:
$name = "Yound";
$$name = " Tang";
echo $name.$$name;
?>
执行该端代码,执行结果如下所示:
Yound Tang
由上面例子知,一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。就可以作为一个可变变量的变量了,这时,两个变量都被定义了