global
関数内でキーワードを使用できるため$keywords
、関数内は関数$keywords
外を参照します。
function printCategoryItems() {
global $keyword;
if(isset($_GET['keyword'])){
$keyword = $_GET['keyword'];
}
}
printCategoryItems();
var_dump($keyword);
これは、関数内の変数が関数のローカル スコープに属し、グローバル スコープに属していないためです(私は長い間 Java を実行していませんが、Java でも同じだと思います: 関数内で宣言された変数その関数の外からは見えません)。
しかし、グローバル変数を使用することは一般的に良い考えではありませんreturn
...より良い解決策は、関数にデータを持たせることです。例えば :
function printCategoryItems() {
if(isset($_GET['keyword'])){
return $_GET['keyword'];
}
}
$keyword = printCategoryItems();
var_dump($keyword);
セミサイドノートとして:まだグローバル変数を使用している別の解決策(これも良い考えではありません)は、$GLOBALS
スーパーグローバル配列を使用することです:
function printCategoryItems() {
if(isset($_GET['keyword'])){
$GLOBALS['keywords'] = $_GET['keyword'];
}
}
printCategoryItems();
var_dump($GLOBALS['keywords']);
ここでは、global
キーワードはもう必要ありません。
最後に、PHP のドキュメント (特にFunctions に関する部分) を読む必要があります。