PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

【PHP入門】foreachで配列の値にアクセス・変更して返す方法

PHPのforeachループでは、変数の前に「&」(アンパサンド)を付けることで、配列の各要素への参照(リファレンス)を取得できます。これにより、ループ内で要素の値を直接操作したり、処理結果を別の配列として返したりすることが可能になります。

基本構文

foreachで配列の値にアクセスする際の基本構文は以下のとおりです。

foreach ($yourArrayName as &$anyVariableName)

「&」を付けると、ループ変数は値のコピーではなく元の配列要素への参照になります。そのため、ループ内での変更が元の配列にも反映されます。

サンプル配列の準備

まず、次のような数値の配列を用意します。

$values = array(35, 50, 100, 75);

実装例:各要素を5倍にして新しい配列として返す

以下のコードでは、foreachとリファレンスを使って配列の各要素を5倍に計算し、その結果を関数から返しています。

<!DOCTYPE html>
<html>
<body>
<?php
$values = array(35, 50, 100, 75);

function getValues($values) {
    $allValues = [];
    $counter = 0;
    foreach ($values as &$tempValue) {
        $tempValue = $tempValue * 5;
        $allValues[$counter] = $tempValue;
        $counter++;
    }
    return $allValues;
}

$result = getValues($values);
for ($i = 0; $i < count($result); $i++) {
    echo $result[$i], "<br>";
}
?>
</body>
</html>

実行結果

175
250
500
375

コードのポイント解説

このコードで押さえておきたいポイントは次の3つです。

  • リファレンス渡し(&$tempValue):「&」を付けることで、$tempValueは元の配列要素への参照になります。ここでは値の書き換えに利用しています。
  • 結果を新しい配列へ格納:計算した値を$allValuesに順番に代入し、return文で呼び出し元に返しています。これにより、元の配列とは独立した結果配列を扱えます。
  • 参照の後始末に注意:参照を使ったforeachの後は、unset($tempValue)で参照を解除しておくのが安全です。解除せずにループ変数を再利用すると、意図しない挙動やバグの原因になることがあります。

このように、foreachとリファレンスを組み合わせれば、配列の各要素へ柔軟にアクセスしながら加工処理を行い、その結果を簡単に関数の戻り値として返すことができます。

  1. PHPの配列からランダムな値を取得する方法|array_rand()関数の使い方

    PHPで配列からランダムな値を取得するには、array_rand()関数を使います。この関数は配列からランダムなキーを返すため、そのキーを指定して対応する値にアクセスするのが基本の流れです。 array_rand()関数とは array_rand()は、配列から1つ以上のランダムなキーを取り出すPHPの組み込み関数です。構文は以下の通りです。 array_rand( array $array, int $num = 1 ) : int|string|array 第1引数: 対象となる配列を指定します。 第2引数: 取得するキーの個数を指定します(省略可、デフォルトは1)。2以上を指定した場合

  2. PHPで配列をSimpleXMLに変換する方法

    PHPでは、array_walk_recursive() 関数を使うことで、配列を SimpleXML オブジェクト(XMLドキュメント)へ簡単に変換できます。array_walk_recursive() は PHP に標準で組み込まれている関数で、多次元配列のすべての要素を再帰的に処理できるのが特徴です。この関数を使った変換では、配列のキーがXMLの要素名(タグ)に、値がその要素の内容にそれぞれ対応します。 それでは、実際のコード例を見てみましょう。 コード例 <?php $array = array ( name => alex, emp