見出し画像

PHP「定数」と「配列」について


変数

数値や文字列などを格納しておく箱のようなもの。
変数には1つの値しか格納することが出来ない。
値は随時変更することが可能。

定数

変数と比べて、値が変更しないものである。
基本的には「const(コンスト)」キーワードを使って定数を定義する。

const 定数名 = 定数の値;

const TEST = "あいうえお";
echo TEST;

//あいうえお


const TEST2 = array(1,2,3);
echo TEST2[0];

//1



配列

数値や文字列を格納しておく箱が複数ある。
配列には複数の値を格納することができる。


array関数

配列の際に使用する関数

//書き方
$a = array ( キー値 => 値 , キー値 => 値 );

//実際に書くと
$a = array ( key => value , key2 => value2 ); 

「キー値」は省略して書くこともできる。
その場合は左から0番、1番・・・と付与されていいる。

$a = [ value , value2 ];


記載の際の注意点

PHPマニュアルより

・10 進数の int として妥当な形式の String は、 数値の前に + 記号がついていない限り、 int 型にキャストされます。 つまり、キーに "8" を指定すると、実際には 8 として格納されるということです。一方 "08" はキャストされません。これは十進数として妥当な形式ではないからです。

・floats もまた int にキャストされます。つまり、 小数部分は切り捨てられるということです。たとえばキーに 8.7 を指定すると、実際には 8 として格納されます。

・bool も int にキャストされます。つまり、 キーに true を指定すると実際には 1 に格納され、 同様にキーを false とすると実際には 0 となります。

・Null は空文字列にキャストされます。つまり、キーに null を指定すると、実際には "" として格納されます。

・array や object は、キーとして使えません。 キーとして使おうとすると Illegal offset type という警告が発生します。


配列の宣言時に同じキーで複数の要素を指定すると、 最後に指定したものがそれまでの値を上書きします。

php.net
//上書きされる
$array = array(
    1    => "a",
    "1"  => "b",
    1.5  => "c",
    true => "d",
);
var_dump($array);


//array(1) { [1]=>string(1) "d" }
//応用

$array = array(
    1    => 'a',
    '1'  => 'b', // 値 "a" は "b" で上書きされます。
    1.5  => 'c', // 値 "b" は "c" で上書きされます。
    -1 => 'd',
    '01'  => 'e', // この値は数値文字列ではないので、キー1を上書きしません
    '1.5' => 'f', // この値は数値文字列ではないので、キー1を上書きしません
    true => 'g', // 値 "c" は "g" で上書きされます。
    false => 'h',
    '' => 'i',
    null => 'j', // 値 "i" は "j" で上書きされます。
    'k', // 値 "k" にはキー2が割り当てられます。なぜなら、これより前のキーの最大値は1だからです。
    2 => 'l', // 値 "k" は "l" で上書きされます。
);

var_dump($array);


//出力結果
array(7) {
  [1]=>
  string(1) "g"
  [-1]=>
  string(1) "d"
  ["01"]=>
  string(1) "e"
  ["1.5"]=>
  string(1) "f"
  [0]=>
  string(1) "h"
  [""]=>
  string(1) "j"
  [2]=>
  string(1) "l"
}


配列要素の参照と代入

配列の要素は「キー」を指定することで参照できる。

$b = $a[ キー ];
//$aは配列の変数名

$a[0] = 代入する値
//配列の要素を参照
$a = array(1, 2, 3);
echo $a[0];

//1

//配列の要素に値を代入
$b = array(1, 2, 3);
$b[0] = "あ";
echo $b[0];

//あ


連想配列

//書き方
$連想配列変数 = [キー1 => 値1, キー2 => 値2, キー3 => 値3... キーn => 値n];

//値を取り出す
$変数 = $連想配列['キー'];
//実例
$names = ['key1' => 'NAME01', 'key2' => 'NAME02', 'key3' => 'NAME03'];

var_dump($names['key1']);
//string(6) "NAME01"



連想配列のキーを取得する

「array_keys」を使うことで実装する。

$profile = array(
 "名前" => "山田太郎",
 "生年月日" => "2000年1月1日",
 "性別" => "男"
);

$keys = array_keys($profile);

var_dump($keys);


//出力結果
"array(3)" { 
[0]=> string(6) "名前" 
[1]=> string(12) "生年月日" 
[2]=> string(6) "性別" 
}



連想配列の値を取得する

配列[]で取得することができる。
今回の場合は $profile[]

$profile = array(
 "名前" => "山田太郎",
 "生年月日" => "2000年1月1日",
 "性別" => "男"
);


$name = $profile["名前"];
$birthday = $profile["生年月日"];
$gender = $profile["性別"];

var_dump($name, $birthday, $gender);



//出力結果
string(12) "山田太郎" 
string(15) "2000年1月1日" 
string(3) "男" 




多次元配列

多次元配列とは、2次元配列以上の配列のこと。
1次元配列は、要素数に応じて横に増えていくイメージの配列。
2次元配列は、要素数に応じて縦と横に増えていくイメージの配列。
3次元配列は、要素数に応じて縦と横、さらにそれを積み重ねたイメージの配列。
もっと複雑な4次元配列以上の配列もある。

//2次元配列の例
$a = [
    array(1,2,3),
    array(4,5,"a" => 6)
];

echo $a[0][0];  //1
解説:配列[0]のキー[0]の値
    1つ目の[0]は array(1,2,3)のこと
   2つ目の[0]は array(1,2,3)の中の1つ目の値のこと。つまり1

echo $a[1][1];  //5
echo $a[1]["a"];  //6
$records = [
  ['id' => 101, 'name' => 'NAME01'],
  ['id' => 102, 'name' => 'NAME02'],
  ['id' => 103, 'name' => 'NAME03'],
];

var_dump($records[0]['id']);  //int(101)
var_dump($records[0]['name']);  //string(6) "NAME01"


多次元配列の取得

$records = [
  ['id' => 101, 'name' => 'NAME01'],
  ['id' => 102, 'name' => 'NAME02'],
  ['id' => 103, 'name' => 'NAME03'],
];

//取得方法1
$name1 = $records[0]['name'];
var_dump($name1);

//string(6) "NAME01"


//取得方法2
$rec = $records[0];
$name2 = $rec['name'];
var_dump($name2);

//string(6) "NAME01"


//取得方法3
foreach ($records as $record) {
 $name = $record['name'];
 var_dump($name);
}

// 1回目 string(6) "NAME01"
// 2回目 string(6) "NAME02"
// 3回目 string(6) "NAME03"

この記事が気に入ったらサポートをしてみませんか?