ホームページ  >  記事  >  バックエンド開発  >  PHP 配列学習: 配列要素を比較し、1 番目と 2 番目に大きい値を取得します

PHP 配列学習: 配列要素を比較し、1 番目と 2 番目に大きい値を取得します

青灯夜游
青灯夜游オリジナル
2021-08-18 12:06:063089ブラウズ

前回の記事では、バブルアルゴリズムを使用して配列要素を昇順に並べ替える方法を紹介しました。興味のある方はリンクをクリックして読んでください→「PHP配列学習: を使用して」要素を昇順に並べ替えるバブル アルゴリズム! 》。今回はPHP配列学習シリーズの続きとして、配列要素を比較して1番目と2番目に大きい値を求める方法を紹介します。

この記事のテーマは「一連の数値が与えられた場合、その最大値と 2 番目の最大値を計算する」です。

実装アイデア: 配列を使用してこの数値セットをラップするため、これには配列要素のサイズの比較が含まれます

2 つの変数を設定します$max $secMax は、取得した最大値と 2 番目の最大値を格納するために使用されます。ただし、最初に全員に初期値を割り当て、配列の最初の要素と 2 番目の要素を割り当てる必要があります。ただし、$max$secMax より大きいことを確認してください。そのため、

if ($arr[0] > $arr[1]){//这个if是为了防止出现数组第一个值就是最大值
        $secMax = $arr[1];
    } else if ($arr[0] < $arr[1]){
        $max = $arr[1];
    }

を判断し、for ループを使用して $arr 配列を継続的に走査する必要があります。 。 [理解できない場合は、記事「PHP ループ学習 3: 配列を走査するための for ループ ステートメントの使用方法 」を参照してください]

for ($i = 0;$i< count($arr);$i++){   //循环数组
   //循环体
}

ループ本体で、次の手順に進みます。 $max$secMax は、配列 ($arr[$i]) の各値と比較されます:

  • if$arr[$ i]$max より大きい場合、$max の値を $secMax に代入し、 $arr[$i]$max

if ($arr[$i] > $max){
    $secMax = $max;
    $max = $arr[$i];
}
  • に代入し、if $arr[ $i]$ max より小さいですが、$arr[$i]$secMax より大きく、$secMax のみです$arr[$i] を交換します $arr[$i]$secMax にコピーします。

if ($arr[$i] < $max && $arr[$i] > $secMax){
      $secMax = $arr[$i];
}

このように比較を続けることで、$max には配列の最大値が格納され、$secMax には配列の 2 番目に大きい値が格納されることを確認できます。

完全な実装コードを見てみましょう:

function takeNum($arr){
	//定义了两个变量$max和$secMax来存放最大和第二大的数值
    $max = $arr[0];
    $secMax = $arr[0];
    if ($arr[0] > $arr[1]){//这个if是为了防止出现数组第一个值就是最大值
        $secMax = $arr[1];
    } else if ($arr[0] < $arr[1]){
        $max = $arr[1];
    }
    for ($i = 0;$i< count($arr);$i++){//循环数组
        if ($arr[$i] > $max){
            $secMax = $max;
            $max = $arr[$i];
        } else if ($arr[$i] < $max && $arr[$i] > $secMax){
            $secMax = $arr[$i];
        }
    }
    echo "最大值为".$max.",第二大值为".$secMax;
}

テストしてください: 次の配列を定義し、takeNum($arr) 関数を呼び出して出力を確認します

$arr = array(555,5,1,429,18,21,52,2,52,9,3,);
takeNum($arr);

最初に大きい値が 555 で、2 番目に大きい値が 429 であることがわかります。出力結果が次のようになっているかどうかを確認してください:

PHP 配列学習: 配列要素を比較し、1 番目と 2 番目に大きい値を取得します

OK、出力結果正しい 。

次に、使用されるナレッジ ポイントについて説明します。ループについてはこれ以上説明する必要はありません (記事「PHP ループ学習シリーズの概要 」を参照してください)。 if else ステートメントの紹介。

if else 文は、プロセス制御における条件判断による実行の一種です。このステートメントを実行すると、まず条件が判定され、判定結果に基づいて対応する演算が行われます。これは、if ステートメント、if...else ステートメント、if...else if...else ステートメントの 3 つのタイプに細分できます。

if ステートメントの構文:

if (判断条件) {
    语句块;
}

if...else ステートメントの構文:

if (判断条件) {
    语句块 1;
} else {
    语句块 2;
}

if...else if...else ステートメントの構文:

if (判断条件 1) {
    语句块 1;
} else if (判断条件 2) {
    语句块 2;
} else if (判断条件 3) {
    语句块 3;
}
......

わかりました。他に知りたいことがあれば、これをクリックしてください。 → →php ビデオ チュートリアル

最後に、PHP 配列に関する無料のビデオ チュートリアルをお勧めします。PHP 関数 配列 配列関数のビデオ説明、ぜひ学んでください。

以上がPHP 配列学習: 配列要素を比較し、1 番目と 2 番目に大きい値を取得しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。