Amazonランキング大賞2018

変数

変数定義

先頭は、英字orアンダースコア
大文字、小文字は区別される
$temp
$_temp
$123temp これはエラー。先頭が数字

変数スコープ

関数外で宣言 グローバルスコープ
関数内で宣言 ローカルスコープ

関数内でグローバル変数を使用する

2つ手段がある

  • global $a; //関数内で使いたいグローバル変数を宣言する
  • $GLOBALS['a'] //スーパーグローバルのGLOBALS配列から取り出す
    ※スーパーグローバルは全てのスコープ内で有効なため、上記のグローバル宣言は必要ない

https://secure.php.net/manual/ja/language.variables.scope.php
配列$GLOBALSは連想配列であり、グローバル変数の 名前がキー、その変数の内容が配列要素の値となっています。 $GLOBALS は スーパーグローバル であるため、$GLOBALSは全てのスコープに存在します。

サンプル
$a = 10;
$b = 20;
function AddNum(){
    global $a, $b;    //グローバル変数の$a, $bを使う宣言
    return $a + $b;
}
echo AddNum();    //出力=30

GLOBALSを使ったパターン
function AddNum(){
    return $GLOBALS['a'] + $GLOBALS['b'];
}
echo AddNum();    //出力=30
サンプル2
$a = 10;
$b = 20;
function AddNum(){
    //下記は間違い。global宣言をせずに使用している。
    //これだと$a,b は関数内で定義されたローカル変数$a,bとして扱われる
    //よって下記の$a,b = NULL
    return $a + $b;
}
echo AddNum();    //出力=NULL

静的変数 static

静的変数
static 変数名

コード
function CountKeep(){
    static $count = 0;
    return ++$count;
}

定義済みの変数

  • $GLOBALS
    グローバルスコープで使用可能なすべての変数への参照
  • $_SERVER
    サーバー情報および実行時の環境情報
  • $_GET
    HTTP GET 変数
  • $_POST
    HTTP POST 変数
  • $_FILES
    HTTP ファイルアップロード変数
  • $_REQUEST
    HTTP リクエスト変数
  • $_SESSION
    セッション変数
  • $_ENV
    環境変数
  • $_COOKIE
    HTTP クッキー
  • $php_errormsg
    直近のエラーメッセージ
  • $HTTP_RAW_POST_DATA
    生の POST データ
  • $http_response_header
    HTTP レスポンスヘッダ
  • $argc
    スクリプトに渡された引数の数
  • $argv
    スクリプトに渡された引数の配列

 

参考 定義済みの変数PHP.net