現在の位置: ホーム> 最新記事一覧> PHPでネストされるMax()関数と多次元配列を使用するためのヒントは何ですか?それを達成する方法は?

PHPでネストされるMax()関数と多次元配列を使用するためのヒントは何ですか?それを達成する方法は?

gitbox 2025-06-16

1。基本的なmax()関数を使用します

まず、 max()関数の基本的な使用法を確認しましょう。パラメーターとして配列または個々の値のセットを受信し、それらの最大値を返すことができます。例えば:

 <span><span><span class="hljs-variable">$values</span></span><span> = [</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>, </span><span><span class="hljs-number">40</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>];
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$values</span></span><span>);  </span><span><span class="hljs-comment">// 出力 50</span></span><span>
</span></span>

この関数は、複数のパラメーターの通過もサポートし、各パラメーターが個別の値として比較されます。例えば:

 <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>, </span><span><span class="hljs-number">40</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>);  </span><span><span class="hljs-comment">// 出力 50</span></span><span>
</span></span>

単純な配列構造の場合、 max()関数は非常に簡単です。しかし、アレイがより複雑になると、特に多次元アレイがより複雑になると、状況は異なります。


2。多次元配列でmax()関数を使用します

多次元配列では、 max()関数はデフォルトで最も外側の配列要素のみを処理できます。多次元配列内の最大値を見つけたい場合は、いくつかの追加の処理方法に依存する必要があります。ここにいくつかの一般的なヒントがあります。

2.1 array_mapとmaxを使用して結合します

多次元配列があると仮定します。配列の各サブアレイにはいくつかの数値が含まれています。各サブアレイで最大値を取得する場合は、最初にarray_map()関数を介して各サブアレイにmax()を適用し、次にmax()を使用して最大値を見つけます。例は次のとおりです。

 <span><span><span class="hljs-variable">$array</span></span><span> = [
    [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>],
    [</span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>],
    [</span><span><span class="hljs-number">7</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>, </span><span><span class="hljs-number">9</span></span><span>]
];

</span><span><span class="hljs-comment">// 各サブアレイの最大値を取得します</span></span><span>
</span><span><span class="hljs-variable">$max_values</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'max'</span></span><span>, </span><span><span class="hljs-variable">$array</span></span><span>);

</span><span><span class="hljs-comment">// 出力每个子数组的最大価値</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$max_values</span></span><span>);  </span><span><span class="hljs-comment">// 出力 [3, 6, 9]</span></span><span>

</span><span><span class="hljs-comment">// 最大値を取得します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$max_values</span></span><span>);  </span><span><span class="hljs-comment">// 出力 9</span></span><span>
</span></span>

この例では、 array_map( 'max'、$ array)は、各サブアレイにmax()関数を適用して、各サブアレイの最大値を取得します。次に、 max()関数を使用して、これらの最大値の最大値を取得します。

2.2 array_columnとmaxを使用して結合します

多次元配列内のデータは連想配列であり、各サブアレイには特定のキー(「スコア」など)があり、特定のキーの値の最大値を見つけたい場合があります。この場合、 array_column()は非常に便利です。すべてのサブアレイの指定された列を多次元アレイに抽出し、 max()関数と組み合わせて使用​​できます。例は次のとおりです。

 <span><span><span class="hljs-variable">$array</span></span><span> = [
    [</span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Alice'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">85</span></span><span>],
    [</span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Bob'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">90</span></span><span>],
    [</span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Charlie'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">92</span></span><span>]
];

</span><span><span class="hljs-comment">// すべての学生を抽出するscore価値</span></span><span>
</span><span><span class="hljs-variable">$scores</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_column</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span>);

</span><span><span class="hljs-comment">// 出力所有学生的分数</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$scores</span></span><span>);  </span><span><span class="hljs-comment">// 出力 [85, 90, 92]</span></span><span>

</span><span><span class="hljs-comment">// 最大スコアを取得します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$scores</span></span><span>);  </span><span><span class="hljs-comment">// 出力 92</span></span><span>
</span></span>

この例では、 array_column($ array、 'score')がすべての生徒のスコアを抽出し、 max()関数を使用して最大スコアを見つけます。

2.3ネストされた多次元アレイの最大値

配列のネストレベルがより深い場合、再帰的な方法を使用してそれを処理できます。再帰関数を使用して、多次元配列を介して反復し、最大値を見つけることができます。再帰的な方法の例は次のとおりです。

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">getMaxValue</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$array</span></span></span><span>) {
    </span><span><span class="hljs-variable">$max</span></span><span> = PHP_INT_MIN;  </span><span><span class="hljs-comment">// 设置一个初始価値</span></span><span>

    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$array</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span>) {
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>)) {
            </span><span><span class="hljs-comment">// 如果価値是一个数组,次に、再帰的に呼び出します</span></span><span>
            </span><span><span class="hljs-variable">$max</span></span><span> = </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$max</span></span><span>, </span><span><span class="hljs-title function_ invoke__">getMaxValue</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>));
        } </span><span><span class="hljs-keyword">else</span></span><span> {
            </span><span><span class="hljs-comment">// 否则直接与当前最大価値比较</span></span><span>
            </span><span><span class="hljs-variable">$max</span></span><span> = </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$max</span></span><span>, </span><span><span class="hljs-variable">$value</span></span><span>);
        }
    }

    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$max</span></span><span>;
}

</span><span><span class="hljs-variable">$array</span></span><span> = [
    [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, [</span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>]],
    [</span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>, [</span><span><span class="hljs-number">7</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>]],
    </span><span><span class="hljs-number">9</span></span><span>
];

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">getMaxValue</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);  </span><span><span class="hljs-comment">// 出力 9</span></span><span>
</span></span>

この方法は、配列の各層を再帰的に通過します。現在の値が配列の場合、比較を続けるために次のレイヤーに移動します。数値の場合、現在の最大値と比較されます。最後に、多次元配列全体の最大値が返されます。