結論から説明すると、「関数定義内で使用される変数は、変数のスコープが関数内のみになるから」です。
変数の「スコープ」というものは、その変数が利用可能な範囲のことをいいます。
スクリプト上のどこでも利用可能な場合のスコープを「グローバル」と呼び、どこでも利用可能な変数は「グローバル変数」といいます。
通常、変数はスクリプト内のどこでも有効なのですが、
関数内で定義された変数については、基本的にスコープが関数定義内のみに限定される為、
同名の変数を用意たとしても、グローバル変数を参照する事はできません。
スコープが異なる為、変数名が同じものでも、まったくの別物として扱われます。
もし、関数内でグローバル変数を使いたいのであれば、幾つか方法があるのですが、
通常、外部で宣言した変数を関数内で利用する為には、関数の引数に利用したい変数を渡す方法を用いります。
//サンプルコード1 $hiragana = "あいうえお"; echo $hiragana; function test($hiragana){ echo $hiragana; }; //サンプルコード2 $hiragana = "あいうえお"; echo $hiragana; function test($moji){ echo $moji; };
スコープが異なる為、サンプルコード2のように、引数名と変数名が一致していなくても問題ありません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。