【PHP】の連想配列の使い方とJavaScriptのオブジェクトの違い

2022年3月3日PHP

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個しかりません。

上のように、条件分岐と組み合わせることで、幅広く活用することができます。

PHP

Posted by devsakaso