![見出し画像](https://assets.st-note.com/production/uploads/images/115672678/rectangle_large_type_2_1b57531cf898dfefd35846d6257c5cef.jpeg?width=800)
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 という警告が発生します。
配列の宣言時に同じキーで複数の要素を指定すると、 最後に指定したものがそれまでの値を上書きします。
//上書きされる
$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"
この記事が気に入ったらサポートをしてみませんか?