【PHP】レッスン4-04:配列を調査しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:配列の調査

この記事の練習問題を解くために必要な知識:
基礎文法・制御構造・関数(レッスン1~3)配列の基本キーが文字列の配列配列の要素の追加と削除配列の調査配列の操作配列の並び替え配列の多次元化

<<前のページ PHP記事一覧 次のページ>>

PHPの「配列の調査」とは

この章ではPHPにおける「配列の調査」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。



配列はPHPで非常に重要なデータ構造の1つです。

その中身を調査することは、効率的なプログラムを書く上で不可欠です。

本記事では、配列のサイズや最大値・最小値、特定の値の有無などを調べる方法を学びます。

配列の調査とは?

「配列の調査」とは、配列に関する情報を取得する操作を指します。

例えば配列の要素数、配列内の最大値や最小値の確認、特定の値が存在するかを調べるなどです。

この調査にはPHPが提供するビルトイン関数を利用します。これらの関数を使えば簡単に配列を操作し、必要な情報を取得することが可能です。

基本構文

以下は配列の調査に使用する主な関数とその構文です:

配列の要素数を取得する

count($array);

配列 $array の要素数を取得します。

配列内の最大値を取得する

max($array);

配列 $array の中で最大の値を取得します。

配列内の最小値を取得する

min($array);

配列 $array の中で最小の値を取得します。

配列の合計を取得する

array_sum($array);

配列 $array の要素の合計を計算します。

特定の値が存在するか確認する

in_array($needle, $array);

$needle が配列 $array 内に存在するかを確認します。

特定の値の位置を検索する

array_search($needle, $array);

$needle が配列 $array のどこにあるかを取得します。見つからない場合は false を返します。

使用例

以下の例では、配列を調査する様々な関数を使った実際のコードを示します。

<?php

// 配列を定義
$numbers = [10, 20, 30, 40, 50];

// 配列の要素数を調べる
echo "配列の要素数: " . count($numbers) . PHP_EOL;

// 配列内の最大値を取得
echo "最大値: " . max($numbers) . PHP_EOL;

// 配列内の最小値を取得
echo "最小値: " . min($numbers) . PHP_EOL;

// 配列内の合計を取得
echo "合計: " . array_sum($numbers) . PHP_EOL;

// 値が配列に存在するか確認
$value = 20;
if (in_array($value, $numbers)) {
    echo "$value は配列内に存在します。" . PHP_EOL;
} else {
    echo "$value は配列内に存在しません。" . PHP_EOL;
}

// 特定の値の位置を検索
$searchValue = 30;
$position = array_search($searchValue, $numbers);
if ($position !== false) {
    echo "$searchValue は配列のインデックス $position にあります。" . PHP_EOL;
} else {
    echo "$searchValue は配列内に見つかりません。" . PHP_EOL;
}

このコードは配列の調査に使用する関数を網羅的に示しています。

例えばcount 関数は配列のサイズを確認するのに便利です。一方、maxmin は数値的な情報を扱うときに役立ちます。

また、in_arrayarray_search を組み合わせることで、配列内の存在確認と位置特定が可能です。

まとめ

配列の調査はPHPプログラミングにおいて基本的かつ重要な操作です。

本記事で紹介した関数を活用すれば、配列の情報を効率よく取得できます。

これらの機能をマスターすることで、配列を用いたプログラムの作成がよりスムーズになるでしょう。

配列の調査の練習問題:PHPの配列を深く理解する練習問題

PHPの配列を調査する方法を学びましょう。

ランダムな数値を含む配列を生成し、その配列の要素数、最大値、最小値、合計値を調査します。

また特定の値が配列内に存在するかを確認し、その値の位置を調べます。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • 配列 $numbers を定義し、ランダムな1から100の整数を5つ格納すること。
  • 配列の要素数を count 関数を使って取得し、表示すること。
  • 配列内の最大値を max 関数を使って取得し、表示すること。
  • 配列内の最小値を min 関数を使って取得し、表示すること。
  • 配列内の全要素の合計値を array_sum 関数を使って取得し、表示すること。
  • 配列内に特定の値(例: 50)が存在するかを in_array 関数を使って確認し、結果を表示すること。
  • 配列内で特定の値(配列の最初の値)の位置を array_search 関数を使って取得し、その位置を表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

生成された配列: 12, 55, 67, 89, 23
配列の要素数: 5
配列内の最大値: 89
配列内の最小値: 12
配列内の合計: 246
値 50 は配列内に存在しません。
値 12 は配列のインデックス 0 に存在します。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:PHPコードの開始を宣言
2:$numbers配列を初期化
3:for文で0から4までのループを開始
  □ mt_rand関数で1から100のランダムな整数を生成し、配列$numbersに追加
4:ループ終了
5:「生成された配列: 」という文字列をimplode関数で結合した$numbers配列の値と共に出力
6:配列の要素数を取得し、「配列の要素数: 」という文字列と共に出力
7:配列内の最大値を取得し、「配列内の最大値: 」という文字列と共に出力
8:配列内の最小値を取得し、「配列内の最小値: 」という文字列と共に出力
9:配列内の合計値を取得し、「配列内の合計: 」という文字列と共に出力
10:$checkValue変数を50に設定
11:in_array関数を使用して$checkValueが配列$numbersに存在するか判定
  □ 真の場合、「値 50 は配列内に存在します。」を出力
  □ 偽の場合、「値 50 は配列内に存在しません。」を出力
12:$searchValue変数に配列$numbersの最初の値を代入
13:array_search関数を使用して$searchValueの位置を配列$numbers内で検索
  □ 検索結果がfalseでない場合、「値 $searchValue は配列のインデックス $position に存在します。」を出力
  □ 検索結果がfalseの場合、「値 $searchValue は配列内に存在しません。」を出力

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

<?php
// 配列を調査する練習問題

// 配列の定義(ランダムな値を生成)
$numbers = [];
for ($i = 0; $i < 5; $i++) {
    /*【穴埋め問題1】
    ここにmt_randを使って1から100のランダムな数値を生成し、配列$numbersに追加するコードを書いてください。
    */
}

// 配列を表示
echo "生成された配列: " . implode(", ", $numbers) . PHP_EOL;

// 配列の要素数を調査する
/*【穴埋め問題2】
ここにcount関数を使って配列$numbersの要素数を出力するコードを書いてください。
*/

// 配列内の最大値を取得する
/*【穴埋め問題3】
ここにmax関数を使って配列$numbersの最大値を出力するコードを書いてください。
*/

// 配列内の最小値を取得する
/*【穴埋め問題4】
ここにmin関数を使って配列$numbersの最小値を出力するコードを書いてください。
*/

// 配列内の合計を取得する
/*【穴埋め問題5】
ここにarray_sum関数を使って配列$numbersの合計値を出力するコードを書いてください。
*/

// 配列内に特定の値があるか確認する
$checkValue = 50;
/*【穴埋め問題6】
ここにin_array関数を使って$checkValueが配列$numbers内に存在するか確認し、その結果を出力するコードを書いてください。
*/

// 配列内で特定の値の位置を探す
$searchValue = $numbers[0];
/*【穴埋め問題7】
ここにarray_search関数を使って$searchValueの位置を調べ、その結果を出力するコードを書いてください。
*/

以上がこの問題の穴埋めコードです。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



練習問題の解答と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

<?php
// 配列を調査する練習問題

// 配列の定義(ランダムな値を生成)
$numbers = [];
for ($i = 0; $i < 5; $i++) {
    // mt_randで1から100のランダムな数値を生成
    $numbers[] = mt_rand(1, 100);
}

// 配列を表示
echo "生成された配列: " . implode(", ", $numbers) . PHP_EOL;

// 配列の要素数を調査する
// count関数は配列の要素数を返します
echo "配列の要素数: " . count($numbers) . PHP_EOL;

// 配列内の最大値を取得する
// max関数は配列内の最大値を返します
echo "配列内の最大値: " . max($numbers) . PHP_EOL;

// 配列内の最小値を取得する
// min関数は配列内の最小値を返します
echo "配列内の最小値: " . min($numbers) . PHP_EOL;

// 配列内の合計を取得する
// array_sum関数は配列内の全ての要素の合計を返します
echo "配列内の合計: " . array_sum($numbers) . PHP_EOL;

// 配列内に特定の値があるか確認する
$checkValue = 50;
// in_array関数は特定の値が配列内に存在するか確認します
if (in_array($checkValue, $numbers)) {
    echo "値 $checkValue は配列内に存在します。" . PHP_EOL;
} else {
    echo "値 $checkValue は配列内に存在しません。" . PHP_EOL;
}

// 配列内で特定の値の位置を探す
$searchValue = $numbers[0]; // 配列の最初の値を探してみる
// array_search関数は指定した値のキーを返します
$position = array_search($searchValue, $numbers);
if ($position !== false) {
    echo "値 $searchValue は配列のインデックス $position に存在します。" . PHP_EOL;
} else {
    echo "値 $searchValue は配列内に存在しません。" . PHP_EOL;
}

正解コードの解説

今回のコードはPHPで配列を調査する方法を学ぶものです。

ランダムな数値を含む配列を生成し、その中身を調査する方法を具体的に見ていきましょう。

配列の生成と初期化

$numbers = [];
for ($i = 0; $i < 5; $i++) {
    $numbers[] = mt_rand(1, 100);
}
  • $numbers = [];: 空の配列を定義します。配列は複数のデータをまとめて格納できる構造です。
  • mt_rand(1, 100);: 1から100までのランダムな数値を生成します。これを配列に追加していきます。
  • for ($i = 0; $i < 5; $i++): ループを5回繰り返し、配列にランダムな値を追加しています。

配列の表示

echo "生成された配列: " . implode(", ", $numbers) . PHP_EOL;
  • implode(", ", $numbers): 配列の要素をカンマ区切りの文字列に変換します。これで配列の内容を確認できます。
  • PHP_EOL: 改行を表します。OSに適した改行コードを挿入します。

配列の要素数の調査

echo "配列の要素数: " . count($numbers) . PHP_EOL;

count($numbers): 配列の要素数を返す関数です。

ここでは配列に格納された値が5つなので、5が表示されます。

配列の最大値・最小値の取得

echo "配列内の最大値: " . max($numbers) . PHP_EOL;
echo "配列内の最小値: " . min($numbers) . PHP_EOL;
  • max($numbers): 配列の中で最も大きな値を返します。
  • min($numbers): 配列の中で最も小さな値を返します。

配列の合計値の取得

echo "配列内の合計: " . array_sum($numbers) . PHP_EOL;

array_sum($numbers): 配列内の全要素を合計した値を返します。

ここではランダムな値を足し合わせた結果が表示されます。

配列に特定の値が存在するか確認

$checkValue = 50;
if (in_array($checkValue, $numbers)) {
    echo "値 $checkValue は配列内に存在します。" . PHP_EOL;
} else {
    echo "値 $checkValue は配列内に存在しません。" . PHP_EOL;
}

in_array($checkValue, $numbers): 配列内に特定の値(ここでは50)が存在するか確認する関数です。

存在すればtrue、しなければfalseを返します。

配列内で特定の値の位置を調べる

$searchValue = $numbers[0];
$position = array_search($searchValue, $numbers);
if ($position !== false) {
    echo "値 $searchValue は配列のインデックス $position に存在します。" . PHP_EOL;
} else {
    echo "値 $searchValue は配列内に存在しません。" . PHP_EOL;
}
  • array_search($searchValue, $numbers): 配列内で特定の値が存在するインデックスを返します。
    値が見つからない場合はfalseを返します。
  • !== false: 見つからない場合を正確に判定するため、厳密な比較を行っています。

まとめ

このコードでは、PHPの配列操作における基本的な調査機能を学びました。

  • 配列の生成と表示
  • 要素数の取得
  • 最大値・最小値の取得
  • 合計値の計算
  • 特定の値の存在確認
  • 値の位置の検索

これらの操作はPHPプログラミングの基礎です。

ぜひ練習して、配列操作の知識を深めてください。

<<前のページ PHP記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    PHPのテキスト&問題集トップへ戻る
    トップページへ戻る