MENU

【PHP】Lesson4-4:配列の中身を調査する方法を学ぼう

tggaa478@yahoo.co.jp

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

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

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

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数編
Lesson4:データ構造編

 ・Lesson4-1:配列の基本を理解しよう
 ・Lesson4-2:キーが文字列の配列を理解しよう
 ・Lesson4-3:配列の要素を追加/削除しよう
 ・Lesson4-4:配列を調査しよう ◁今回はココ
 ・Lesson4-5:配列を操作しよう
 ・Lesson4-6:配列を並び替えよう
 ・Lesson4-7:配列の多次元化を理解しよう
 ・確認問題4-1:ナインゲームを作ろう
 ・確認問題4-2:宝探しゲームを作ろう
 ・確認問題4-3:マルバツゲームを作ろう
Lesson5:クラス

<<前のページ

学習記事一覧

次のページ>>

配列の中身を調べる基本とは?

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

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

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

配列調査に使うPHPの基本構文

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

count関数で配列の要素数を取得する方法

count($array);

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

max関数で配列内の最大値を取得する方法

max($array);

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

min関数で配列内の最小値を取得する方法

min($array);

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

array_sum関数で配列の合計値を求める方法

array_sum($array);

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

in_array関数で配列に特定の値があるかを確認する方法

in_array($needle, $array);

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

array_search関数で配列内の値の位置を探す方法

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からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント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 は配列内に存在しません。」を出力

Q
ヒント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の位置を調べ、その結果を出力するコードを書いてください。
*/

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

演習問題の答え合わせ

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
<?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;
}
Q
正解コードの解説

コードをブロックごとに分割して解説します。

配列の生成と初期化

$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学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました