Kintarou'sBlog

プログラミング学習中。学習内容のアウトプットや読書で学んだことなど随時投稿!

【PHP】基礎文法(配列関連)

こんにちは😊Kintarouです。

現在エンジニア転職を目指してTECH CAMPにてプログラミング学習中です👨‍🎓
夢はフリーランスエンジニアになって働く人が働きやすいシステムを作ること!
と、愛する妻と海外移住すること🗽

プログラミングや読んでいる本のことなど、ブログに書いていきます!
twitter : https://twitter.com/ryosuke_angry


今回参考にさせて頂いたサイト様🙇‍♂️ dotinstall.com


配列を使う

同じ意味合いを持つ値を一つの変数に配列として格納することができます。

<?php

$prices = [90, 110, 70];

#添字は0から始まり、カンマ毎に割り振られています。

echo $prices[1] . PHP_EOL;

#=> 110

※90は添字0なので、添字1は次の110となります。

配列にキーを設定する

配列の要素にアクセスする際、添字でなく既定のキーを割り振る事もできます。

<?php

$prices = [90, 110, 70];

#print_rで配列の内容を整理して出力してくれます。

print_r($prices);

#=> Array
#=> (
#=>     [0] => 90
#=>     [1] => 110
#=>     [2] => 70
#=> )

#要素にキーを割り振ります。

$prices = [
  'first'       => 90,
  'second' => 110,
  'third'     => 70,
];

#$prices = ['first' => 90, 'second' => 110, 'third' => 70]; と同義ですが改行で見やすくしてます。

print_r($prices);

#=> Array
#=> (
#=>     [first] => 90
#=>     [second] => 110
#=>     [third] => 70
#=> )

配列の要素毎に操作する

foreach文を使って配列の要素毎に指定の操作が出来ます。

<?php

$prices = [
  'first'       => 90,
  'second' => 110,
  'third'     => 70,
];

foreach ($prices as $key => $price) {
  echo $key . "-" . $price . PHP_EOL;
}

#=> first-90
#=> second-110
#=> third-70

$pricesという配列の各要素を$priceという変数に代入し直して配列にある要素毎に処理をしています。$keyはキーを変数化しています。

配列を入れ子にする・展開する

配列の中に配列を入れる事も出来ます。そのまま入れると入れ子になります。

<?php

$newPrices = [120, 85];
$prices = [90, 110,$newPrices, 70];

print_r($prices);

#=> Array
#=> (
#=>     [0] => 90
#=>     [1] => 110
#=>     [2] => Array
#=>         (
#=>             [0] => 120
#=>             [1] => 85
#=>         )
#=> 
#=>     [3] => 70
#=> )

# この中で、配列$pricesの中の配列$newPricesの[0]=>120にアクセスする場合以下のようにします。

echo ($prices[2][0]) . PHP_EOL;

#=> 120

入れ子ではなく、配列の中に展開したい場合は変数名の前に...をつけます。
※この記法はPHP 7.4以降で使えるようです。

<?php

$newPrices = [120, 85];
$prices = [90, 110,...$newPrices, 70];

print_r($prices);

#=> Array
#=> (
#=>     [0] => 90
#=>     [1] => 110
#=>     [2] => 120
#=>     [3] => 85
#=>     [4] => 70
#=> )

渡した実引数分を受け取って処理する

仮に引数をいくつ渡すことになるかわからない場合に使えます。

<?php

function sum($a, $b, $c) 
{
  return $a + $b + $c;
}

#この関数だと渡す引数は3つです。いくつ渡すかわからない場合は下記。

function sum(...$numbers)
{
  $total = 0;
  foreach ($numbers as $number) {
    $total += $number;
  }
  return $total;
}

echo sum(1, 3, 4) . PHP_EOL;
echo sum(1, 3, 4, 5, 8) . PHP_EOL;

#=> 8
#=> 21

※...$numbersとすることによって、渡された実引数を配列に変換して処理します。先に仮置きした$total変数にforeach文で$numberに再代入した各要素を足し上げていきます。最後に$totalをreturnします。

関数の戻り値を配列にして受け取る

関数の戻り値を配列にして返す事で、複数の戻り値を受け取ることが出来ます。
※先の例では実引数の合計だけでしたが、平均も一緒に受け取るなどが出来ます。

<?php
function result(...$numbers)
{
  $total = 0;
  foreach ($numbers as $number) {
    $total += $number;
  }
  #countは引数に渡された配列の個数を返します。
  return [$total, $total / count($numbers)];
}

print_r (result(1, 3, 4, 5, 8));

#=> Array
#=> (
#=>     [0] => 21
#=>     [1] => 4.2
#=> )

# 配列にした戻り値を一気に変数に代入する事もできます。

# list($sum, $average) = result(1, 3, 4, 5, 8);
[$sum, $average] = result(1, 3, 4, 5, 8);

#上記どちらも同じ意味ですが、今回は下段を使います。

echo $sum . PHP_EOL;
echo $average . PHP_EOL;

#=> 21
#=> 4.2

本日は以上です! どなたかの参考になれば幸いです😊