【PHP】の連想配列の使い方とJavaScriptのオブジェクトの違い
PHPの連想配列の使い方を紹介します。
また、PHPの連想配列とJavaScriptのオブジェクトの違いを説明しています。
目次から読む
PHPの連想配列の使い方
PHPの連想配列は、インデックス(添字)に好きな名前をつけることができるものです。
JavaScriptでいうところオブジェクトにあたります。
<?php
$myFamily = [
'father' => '50',
'mother' => '54',
'brother' => '20',
'sisters' => ['23', '26'],
];
?>
インデックス(添字)の部分のことを、キーと呼び、その対にある値をバリューと呼びます。
連想配列から要素を取得する
<?php
$myFamily = [
'father' => '50',
'mother' => '54',
'brother' => '20',
'sisters' => ['23', '26'],
];
echo $myFamily['father']; //50
echo $myFamily['sisters'][1];//26
?>
上のように、[]にキーを指定することでそのペアにあたる値を取得することができます。
連想配列から要素の値を変更する
<?php
$myFamily = [
'father' => '50',
'mother' => '54',
'brother' => '20',
'sisters' => ['23', '26'],
];
$myFamily['father'] = '60';
echo $myFamily['father']; //60
$myFamily['sisters'][1] = '30';
echo $myFamily['sisters'][1];//30
?>
連想配列から先頭の要素を削除する array_shift()
<?php
$myFamily = [
'father' => '50',
'mother' => '54',
'brother' => '20',
'sisters' => ['23', '26'],
];
array_shift($myFamily);
array_shift($myFamily);
print_r($myFamily);
//Array ( [mother] => 54 [brother] => 20 [sisters] => Array ( [0] => 23 [1] => 26 ) )
?>
あまり使用することはないですが、array_shiftで先頭の要素を削除することができます。
連想配列からキーを指定して要素を削除する unset()
<?php
$myFamily = [
'father' => '50',
'mother' => '54',
'brother' => '20',
'sisters' => ['23', '26'],
];
unset($myFamily['mother']);
print_r($myFamily);
//Array ( [father] => 50
//[brother] => 20
//[sisters] => Array ( [0] => 23 [1] => 26 ) )
?>
unset()では、キーを指定することで、消したい要素を指定することができます。
JavaScriptのオブジェクトの違い
PHPの連想配列とJavaScriptのオブジェクトの違いは、JavaScriptのオブジェクトは、値として、データだけでなく、関数といった処理も含めることができます。
そのため、JavaScriptでは連想配列とは呼ばず、もっと広い意味のオブジェクト、もしくはオブジェクトリテラルと呼びます。
連想配列と繰り返し処理
<?php
/**
* 商品名 => [価格, 在庫数]
*/
$products = [
'pen' => [100, 2],
'eracer' => [500, 10],
'ruler' => [200, 3],
'protractor' => [300, 1]
];
foreach($products as $key => $value) {
echo "{$key}は{$value[0]}円で{$value[1]}個あります。
";
}
// penは100円で2個存在します。
// eracerは500円で10個存在します。
// rulerは200円で3個存在します。
// protractorは300円で1個存在します。
上のようにforeachなどを使ってkeyとvalueに分解してアクセスすることができます。
foreachの使い方は、配列の繰り返し処理のやり方を参考にしてみてください。
連想配列と条件分岐
<?php
// 購入希望 商品数
$cart = [
'pen' => 1,
'eracer' => 2,
];
// 在庫数
$stock = [
'pen' => 2,
'eracer' => 1,
];
foreach($cart as $key => $value) {
if($value <= $stock[$key]) {
echo 'はい、ありがとうございます。';
} else {
echo "すいません、{$key}は{$stock[$key]}個しかりません。";
}
}
//pen→ はい、ありがとうございます。
//eracer→ すいません、eracerは1個しかりません。
上のように、条件分岐と組み合わせることで、幅広く活用することができます。