【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とリファレンスを組み合わせれば、配列の各要素へ柔軟にアクセスしながら加工処理を行い、その結果を簡単に関数の戻り値として返すことができます。
-
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以上を指定した場合
-
PHPで配列をSimpleXMLに変換する方法
PHPでは、array_walk_recursive() 関数を使うことで、配列を SimpleXML オブジェクト(XMLドキュメント)へ簡単に変換できます。array_walk_recursive() は PHP に標準で組み込まれている関数で、多次元配列のすべての要素を再帰的に処理できるのが特徴です。この関数を使った変換では、配列のキーがXMLの要素名(タグ)に、値がその要素の内容にそれぞれ対応します。 それでは、実際のコード例を見てみましょう。 コード例 <?php $array = array ( name => alex, emp