配列の値を効率よく取り出す

PHPのシンタックス

  1. HOME
  2. 配列の抽出

配列から順に値を取り出す

foreach文を使うことで、配列から値を取り出すことができます。値だけを取り出す書式とキーと値の両方を取り出す書式の2種類ある。
配列から値を順に取り出して繰り返す
foreach($array as $value){
 $valueを使った繰り返しの処理
}
インデックス配列から値を取り出す書式。$arrayから順に値を$valueを取り出して、すべての値に対して{}の文を繰り返し実行します。

名前の配列からリストを作る

  1. 桃太郎さん
  2. 金太郎さん
  3. 一寸法師さん
  4. 赤鬼さん
<?php
$namelist = ["桃太郎", "金太郎", "一寸法師", "赤鬼"];
echo "<ol>", "\n";
foreach ($namelist as $value) {
  echo "<li>", $value, "さん</li>\n";
}
echo "</ol>\n";
?>

配列の正の値だけを合計する

正の値の合計は87です。
<?php
$valuelist = [15, -50, 25, 38, 9];
$sum = 0;
foreach ($valuelist as $value) {
  if ($value > 0) {
    $sum += $value;
  }
}
echo "正の値の合計は{$sum}です。";
?>

foreach文でキーと配置を順に取り出す

連想配列からキーと値を取り出すとき
配列からキーと値を順に取り出して繰り返す
foreach($array as $key => $$value){
$key と $valueを使った繰り返しの処理
}
$arrayから順にキーと値を$keyと$value取り出して、すべての要素に対して{}の分を繰り返し実行します。

配列からすべてのキーと値を取り出す

  • ID:FF
  • 品名:ファイナルファイト
  • 価格:8800
<?php
$data = ["ID" => "FF", "品名" => "ファイナルファイト", "価格" => "8800"];
echo "<ul>", "\n";
foreach ($data as $key => $value) {
  echo "<li>", $key, ":", $value, "</li>\n";
}
echo "</ul>\n";
?>

配列から条件に合う値を抽出する

array_filterを使うと条件に合う値を配列から抽出することができます。
配列から条件に合う値を抽出する
$filtered = array_filter($myArray,callback);
$myArrayの配列の値をcallbackで指定した関数で判定し、結果がtrueになった値だけを$filteredの配列に抽出します。callback関数には配列の値が引数として渡されます。元の配列はインデックス配列でも連想配列でも構いません。

配列から正の値だけを抽出する

Array ( [a] => 3 [c] => 5 [e] => 4 )
<?php
function isPlus($value)
{ //コールバック関数
  return $value > 0; //値が正なら抽出
}

$valuelist = ["a" => 3, "b" => 0, "c" => 5, "d" => -2, "e" => 4];
$filtered = array_filter($valuelist, "isPlus");
print_r($filtered);
?>

インデックス配列を変数に展開する

list()を使うとインデックス配列の値を効率よく変数に代入できます。
配列を変数に展開する
list($var1,$var2,$var3,...) = インデックス配列;

配列を変数に展開する

会員ID:4521
お名前:花山薫
年齢:16
<?php
$data = [4521, "花山薫", 16];
list($id, $name, $age) = $data;
echo "会員ID:","$id","\n <br>";
echo "お名前:","$name","\n <br>";
echo "年齢:","$age","\n";
?>