PHP 学習メモ: php 変数の使用法_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:15:40
オリジナル
889 人が閲覧しました

変数は PHP プログラミングにおいて不可欠なものです。PHP の変数はグローバル変数とプライベート変数に分けられます。参考までに、PHP 変数についての私の理解と使用法をいくつか紹介します。

変数と定数を定義する際に、どのような点に注意しますか?あなたはこう思うかもしれません:

•変数の定義方法とC#などの言語との違いは?
•変数では大文字と小文字が区別されますか?
•他に重要な PHP 変数はありますか?

•定数と変数は同じように定義されていますか?
別々に伝えましょう。


1.変数の定義方法とC#などの言語との違いは?
PHP の変数は、ドル記号とそれに続く変数名で表されます。変数名では大文字と小文字が区別されます。例:

コードは次のとおりです コードをコピー

$var='ジム';
$VAR='キミ;
echo "$var,$VAR";//出力 "ジム、キミ"
?>

変数の名前にも注意する必要がありますが、これはほとんどの言語と同じです。
2. 変数では大文字と小文字が区別されますか?
1 で述べたように、大文字と小文字は区別されます。
注意すべき点の 1 つは、PHP4 以降、参照割り当ての概念が導入されたということです。これは実際にはほとんどの言語の参照に似ていますが、最も似ているのは C/C++ だと思います。 &」の記号。


例:


他の言語と同様に、変数名を持つ変数のみを参照できます


端的に言うと、phpの変数とは、変数の値を解析して変数名にし、その変数名の値を読み取るものです。例:

コードは次のとおりです コードをコピー
1 2 $foo = 'Bob' // 'Bob' を foo
に代入します。 3 $bar = &$foo; // $bar を通じて参照されます
4 $bar = "私の名前は $bar" // $bar を変更します
; 5 エコー $bar;
6 echo $foo; // $foo も変更されました
7?>
コードは次のとおりです コードをコピー

$a = "中国" //変数 a
; $b = "a" //変数 b
; $China = "私は中国人です !" //変数 中国
; $f = "b" //変数 f
;
echo $a."
" //中国を出力します
echo $$a."
"; //出力 私は中国人です -- 可変変数として解析したい場合は、先頭に $ 記号を追加する必要があります
$a = "f"; //変数が指す名前を変更します(ここでは変数変数の適用)
echo $$a."
"; //上で指定した変数 f を渡して b
を出力します $a = "b" //上記と同じ
; echo $$a."

" //a
を出力します
echo $b."
" // を出力します
echo $$b."
" //出力 b
echo $$$b."

" // を出力します

echo $f."
" //出力 b
echo $$f."
" // を出力します
echo $$$f."
" //出力 b
echo $$$$f."

" // を出力します

$$a = "中国"; //最後のものは変数を b に変更しました。いわゆる $$a=$b は $b
の変更された値です。 echo $b."
" //中国を出力します
echo $$b //出力 私は中国人です
?>

注: 可変変数は $this 変数およびスーパー グローバル変数には適用できません (PHP 変数のスコープは他の高級プログラミング言語とは異なります。コードを参照してください)

変数関数:

コードは次のとおりです コードをコピー


$name = '男'; $$name = 'abc'; //事前に man 変数が存在しない場合。新しい man 変数を作成するだけです。 次に、それに abc を割り当てます
$$$name = 'def';
echo $man."
" //abc を出力します
エコー $abc // 出力 def

echo "


";
関数 show()
{
global $name; // ここでの global はグローバル変数として設定されていません。でも引用
echo $name."
" //出力 man
}

関数 showtwo()
{
//グローバル $name;
// $name をエコーし​​ます。"
";
echo $GLOBALS['name'] //スーパーグローバル変数配列
; }

ショー(); ショーツー();
?>

コードは次のとおりです コードをコピー

関数 b()
{
「これはBです」とエコーします。 }
function c($name = "中国") //デフォルト値を設定します
{
echo "$name です";
}

$a = 'b';
$a() //値を見つける関数
; $a = 'c';
$a() ?>
;

変数変数の典型的な応用例:

コードは次のとおりですコードをコピー


<頭>

無題のドキュメント



<フォームアクション="#" メソッド="ポスト">










                                                                                       


foreach($_POST as $key=>$value)
                                                                            //print_r($_POST);
$$key = $value;
}
//extract($_POST); //配列から現​​在のシンボルテーブルに変数をインポートします ---PHPマニュアルを自分で見つけてください
echo $name."
";
echo $pwd."
";
echo $tag."
";
?>




変数スコープ .


変数スコープ
変数のスコープは、変数が定義されているコンテキストです (翻訳者: 単刀直入に言うと、その有効スコープです)。ほとんどの PHP 変数にはスコープが 1 つだけあります。この単一スコープ スパンには、include および require によって導入されたファイルも含まれます。例:

コードは次のとおりです コードをコピー

$a = 1;
「b.inc」を含める;
?>

この変数 $a は、インクルードされたファイル b.inc で有効になります。ただし、ユーザー定義関数では、ローカル関数スコープが導入されます。関数内で使用される変数は、デフォルトではローカル関数のスコープに制限されます。例:

コードは次のとおりです コードをコピー

$a = 1; /* グローバルスコープ */

関数テスト()
{
echo $a; /* ローカルスコープ変数への参照 */
}

テスト();
?>

echo ステートメントは変数 $a のローカル バージョンを参照しており、このスコープ内の値が割り当てられていないため、このスクリプトからの出力はありません。 PHP のグローバル変数は C 言語とは少し異なることに気づくかもしれません。C 言語では、ローカル変数によってオーバーライドされない限り、グローバル変数は関数内で自動的に有効になります。誰かが不用意にグローバル変数を変更する可能性があるため、問題が発生する可能性があります。 PHP のグローバル変数を関数で使用する場合は、グローバル変数を宣言する必要があります。

グローバルキーワード
まず、グローバルの使用例:


例 12-1. グローバル

の使用
コードは次のとおりです コードをコピー

$a = 1;
$b = 2;

関数Sum()
{
グローバル $a、$b;

$b = $a + $b;
}

合計();
エコー $b;
?>


上記のスクリプトの出力は「3」になります。グローバル変数 $a と $b は関数内で宣言されており、任意の変数のすべての参照変数はグローバル変数を指します。 PHP では、関数が宣言できるグローバル変数の最大数に制限はありません。

グローバル スコープ内の変数にアクセスする 2 番目の方法は、特別な PHP カスタム $GLOBALS 配列を使用することです。前の例は次のように記述できます:


例 12-2. global

の代わりに $GLOBALS を使用する
コードは次のとおりです コードをコピー

$a = 1;
$b = 2;

関数Sum()
{
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}

合計();
エコー $b;
?>


$GLOBALS 配列では、各変数は要素であり、キー名は変数名に対応し、値変数の内容は対応します。 $GLOBALS はスーパーグローバル変数であるため、$GLOBALS はグローバル スコープ内に存在します。次の例は、スーパーグローバル変数の使用を示しています。

例 12-3. スーパーグローバル変数とスコープを示す例

コードは次のとおりですコードをコピー
関数test_global()
{
// ほとんどの事前定義変数は「スーパー」ではなく、関数のローカル スコープで使用できるようにするには「global」キーワードが必要です。
グローバル $HTTP_POST_VARS;

print $HTTP_POST_VARS['name'];

// スーパーグローバルはどのスコープでも有効であり、「グローバル」宣言は必要ありません。スーパーグローバルは PHP 4.1.0 で導入されました。

$_POST['name'] を印刷します
}
?>

静的変数を使用する
変数スコープのもう 1 つの重要な機能は、静的変数です。静的変数はローカル関数スコープ内にのみ存在しますが、プログラムの実行がこのスコープを離れても、その値は失われません。以下の例を見てください:

例 12-4. 静的変数の必要性を示します

コードは次のとおりですコードをコピー functionTest()
{
$a = 0;
エコー $a;
$a++;
}
?>

この関数は $a の値を 0 に設定し、呼び出されるたびに「0」を出力するため、あまり役に立ちません。変数を 1 つインクリメントする $a++ は、この関数が終了すると変数 $a が存在しなくなるため、効果がありません。このカウント値を失わないカウント関数を作成するには、変数 $a を静的として定義します:

例 12-5. 静的変数の使用例

コードは次のとおりですコードをコピー 関数 Test()
{
静的 $a = 0;
エコー $a;
$a++;
}
?>

これで、Test() 関数を呼び出すたびに $a の値が出力され、1 ずつ増加します。

静的変数は、再帰関数を処理する方法も提供します。再帰関数は、それ自体を呼び出す関数です。再帰関数を作成するときは、無限に再帰する可能性があるので注意してください。再帰を終了する適切な方法があることを確認する必要があります。静的変数 $count を使用して、いつ停止するかを決定し、再帰的に 10 までカウントするこの単純な関数を考えてみましょう:

例 12-6. 静的変数と再帰関数

コードは次のとおりですコードをコピー


注: 静的変数は、上の例のように宣言できます。これを宣言内の式の結果に代入すると、解析エラーが発生します。


例 12-7. 静的変数の宣言

関数 Test()
{
静的 $count = 0;

$count++;

エコー $count;
if ($count < 10) {
テスト ();
}
$count--;
}
?>

コードは次のとおりです コードをコピー

関数 foo(){
static $int = 0 // 正しい
; static $int = 1+2 // (式なので) 間違っています
static $int = sqrt(121); // (式でもあるので) 間違っています

$int++;
エコー $int;
}
?>


グローバル変数と静的変数への参照
PHP4 を駆動する Zend エンジンの第 1 世代では、変数の静的定義とグローバル定義が参照の形式で実装されています。たとえば、関数スコープ内の global ステートメントを使用してインポートされた真のグローバル変数は、実際にグローバル変数への参照を確立します。次の例が示すように、これにより予期しない動作が発生する可能性があります:

コードは次のとおりです コードをコピー

関数 test_global_ref() {
グローバル $obj;
$obj = &new stdclass;
}

関数 test_global_noref() {
グローバル $obj;
$obj = 新しい標準クラス;
}

test_global_ref();
var_dump($obj);
test_global_noref();
var_dump($obj);
?>

上記の例を実行すると、次の出力が得られます:

NULLオブジェクト(stdClass)(0) {}

同様の動作は静的ステートメントにも適用されます。参照は静的に保存されません:

コードは次のとおりです コードをコピー

関数 &get_instance_ref() {
静的 $obj;

echo "静的オブジェクト: ";
var_dump($obj);
if (!isset($obj)) {
//静的変数への参照を代入します
$obj = &new stdclass;
}
$obj->プロパティ++;
$obj;
を返します }

関数 &get_instance_noref() {
静的 $obj;

echo "静的オブジェクト: ";
var_dump($obj);
if (!isset($obj)) {
//オブジェクトを静的変数に代入します
$obj = 新しい標準クラス;
}
$obj->プロパティ++;
$obj;
を返します }

$obj1 = get_instance_ref();
$still_obj1 = get_instance_ref();
エコー「/n」;
$obj2 = get_instance_noref();
$still_obj2 = get_instance_noref();
?>

上記の例を実行すると、次の出力が得られます:

静的オブジェクト: NULLStatic オブジェクト: NULLStatic オブジェクト: NULLStatic オブジェクト: object(stdClass)(1) { ["property"]=> int(1)}

上記の例は、参照が静的変数に割り当てられた場合、&get_instance_ref() 関数が 2 回目に呼び出されたときにその値が記憶されないことを示しています

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/628777.html技術記事 PHP プログラミングでは変数は不可欠なものです。PHP の変数はグローバル変数とプライベート変数に分けられます。PHP 変数の理解と使用法をいくつか紹介します。参考にしてください。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!