カテゴリー
PHP

PHP7(3)変数と配列と定数

変数と配列と定数についてです。


変数のきほん

PHP7 の変数の基本ルールです

  • $変数名 または ${変数名}
  • 変数名は大文字小文字を区別
  • 変数の使用前の宣言は不要
  • “&$変数名”として参照渡しによる代入が可能($a = &$b;)
  • 変数のスコープ
    • 関数の中の変数:関数の中だけのローカル変数
    • 関数の外の変数:グローバル変数。ただし、そのままでは関数の中からは見えない。
    • 関数の中でグローバル変数を使う方法(2通り)
      • 関数の中で global $a, $b; のように宣言する
      • 関数の中でシステムで用意してある配列 $GLOBALS を使う(例:$GLOBALS[‘a’])
  • 関数の中で静的変数が使える(例: static $a = 0; //最初の呼び出しで0に初期化)
  • 変数を変数の名前に使える(可変変数)・・・${$a} 曖昧さがなければ $$a でも可

変数の内容を判定する関数

  • 変数が空か調べる(0や”0″や””も空)・・・ empty 
  • 数値とみなせるデータが入っているか調べる・・・  is_numeric 

文字列のきほん

PHP7 で文字列を扱うときの基本ルールですね

  • ‘文字列’ ・・・そのまま(文字列の中に変数があっても展開されない)
  • “文字列” ・・・ 文字列の中に変数があると展開される
  • ヒアドキュメントも使える(<<<
    • ヒアドキュメントの中の変数は基本展開される(<<<識別子
    • 識別子を ‘識別子’ とすると展開されない(<<<'識別子'
  • ‘文字列1’ . ‘文字列2’ ・・・ピリオド(.) で連結できる

配列のきほん

いろんな配列が使えるんですね

  • $変数名[添え字]
    • $a[0] = "こむろ"; ・・・添え字が数字
    • $a['name'] = "こむろ"; ・・・添え字が文字列(連想配列)
    • $a[] = "こむろ"; ・・・添え字は0から自動で割り当てられる
  • まとめて生成(初期化)・・・ array 
    • $a = array('データ1' , 'データ2' , 'データ3'); ・・・添え字は0から順に
    • $a = array(5=>'データ1' , 'データ2' , 'データ3'); ・・・添え字は5から順に
    • $a = array('one'=>'データ1' , 'two'=>'データ2' , 'three'=>'データ3'); ・・・連想配列

多次元配列も大丈夫

多次元配列も大丈夫

  • $変数名[添え字1][添え字2] ・・・$a[0][0] = “こむろ”;
  • まとめて生成(初期化)・・・ array 
$a = array(
        'alpha'=>array(
                 'データ1',   ・・・ $a['alpha'][0] で参照
                 'データ2'    ・・・ $a['alpha'][1] で参照
               ),
        'beta'=>array(
                 'データ3',   ・・・ $a['beta'][0] で参照
                 'データ4'    ・・・ $a['beta'][1] で参照
               )
      );

配列の基本的な関数

配列を扱うための関数も揃ってますね

  • 配列の要素の数・・・ count  count($arr);
  • 配列の現在ポインタのある要素の添え字(インデックス)を返す・・・  key  key($arr);
  • 配列の現在ポインタのある位置の要素を返す・・・ current  current($arr);
  • 配列の先頭の要素を返す(内部ポインタを先頭にセット)・・・  reset  reset($arr);
  • 配列の最後の要素を返す(内部ポインタを最終要素にセット)・・・ end  end($arr);
  • 配列のひとつ前の要素を返す(内部ポインタをひとつ戻す)・・・  prev  prev($arr);
  • 配列の次の要素を返す(内部ポインタをひとつ進める)・・・ next  next($arr);
  • 配列の要素から “$添え字” という変数を作り出す・・・ extract  extract($arr);

配列で使える演算子

配列を扱える演算子もあるの

  • $arr1 + $arr2・・・ 配列の結合
  • $arr1 == $arr2・・・添え字も要素もすべて等しい(PHPが自動変換した結果同じになる)
  • $arr1 === $arr2・・・ 添え字も要素も形式上も完全に等しい(元々の型や並び順も含めて同じ)
  • $arr1 != $arr2・・・ 添え字と要素のどこかが等しくない(PHPが自動変換した結果でも等しくない)
  • $arr1 <> $arr2・・・添え字と要素のどこかが等しくない(PHPが自動変換した結果でも等しくない)
  • $arr1 !== $arr2・・・ 添え字や要素のどこかが完全には等しくない(元々の型や並び順も含めて同じでないところがある)

配列の要素をとりだし

配列を使ってループ処理すると…

うん、PHP7 だとこんなかんじ

  • 添え字が整数
for ( $i=0; $i<count($arr); $i++ ) {
  print $arr[$i];
}
  • 添え字が文字列(連想配列)
for( reset($arr); key($arr); next($arr) ) {
  print current($arr);
}

定数のきほん

定数のきほんです

  • 定数名は文字列そのまま($などつけない)
  • 定数名は大文字小文字を区別すると思っておいた方がいい(なんと定義のしかたによっては区別しない場合もある)
  • 定数はグローバルにどこからでもアクセスできる
  • 定数の定義は  define ・・・define(‘定数名’ , 内容);
  • 定数の定義は const でも可能。ただし制約があることがあるので注意・・・const 定数名=内容;
  • 配列型の定数も作れる