2020.12.31
【PHP基礎】様々な関数④ 配列関数その1 array_sum array_search count
この記事では、
配列の合計を求めるarray_sum、
配列に特定の値があるか調べるarray_search、
配列の要素数を数えるcount、
を順番に説明します。
array_sum関数
array_sum関数は、数値型の要素のみが中に入っている、
単純な配列に対して適用する関数です。
配列内のすべての数を足し合わせた合計を返します。
<?php $arr=[1,2,3,4,5]; echo array_sum($arr); ?>
連想配列
連想配列の場合は、
値のみが加算されます。
以下の例では、配列のキーでなく、
値のみが加算され、
15が表示されていますね。
<?php $arr=[ "a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5]; echo array_sum($arr); ?>
値に数値以外のものがある配列
数値以外の値は無視されます。
以下の例では、配列の最初の要素の値”a”は無視され、
数値のみが加算され、14が表示されていますね。
<?php $arr=["a",2,3,4,5]; echo array_sum($arr); ?>
実用例
フォームで、合計値を表示する場合に使います。
入力画面
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>参加者内訳</title> </head> <body> <form action="./Sample_array_sum_result.php" method="post"> <div> <label for="male">男性</label> <input type="number" name="male" id="male" min="0" max="100" step="1"><span>%</span> </div> <div> <label for="female">女性</label> <input type="number" name="female" id="female" min="0" max="100" step="1"><span>%</span> </div> <div> <label for="other">その他</label> <input type="number" name="other" id="other" min="0" max="100" step="1"><span>%</span> </div> <button type="submit" class="btn btn-primary">提出</button> </form> </body> </html>
結果画面
<?php $total = [ "male" => $_POST["male"], "female" => $_POST["female"], "other" => $_POST["other"] ]; echo "男性".$_POST["male"]."%<br>\n"; echo "女性".$_POST["female"]."%<br>\n"; echo "その他".$_POST["other"]."%<br>\n"; $total_sum = array_sum($total); echo "合計".$total_sum."%<br>\n"; if($total_sum !== 100){ echo "合計が100パーセントになっていません<br>\n"; }else{ echo "合計が100パーセントです<br>\n"; } ?>
array_search関数
配列の中に特定の要素があるか調べる関数です。
<?php $arr = ["jp" => "日本", "us" => "アメリカ", "br" => "ブラジル"]; $code = array_search("日本", $arr); if ($code != false) { echo "日本のコードは $code です。"; } else { echo "日本のコードが見つかりません。"; } ?>
count関数
配列の要素数を調べる関数です。
再帰モードの時は、内部に入れ子になった
配列の要素数も、別個に集計します。
<?php $arr = [ 10, "hello", [1, 2, 3]];// 通常モード echo count($arr); echo "<hr>"; // 再帰モード echo count($arr, COUNT_RECURSIVE); ?>