먼저 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 () 함수는 사용하기가 매우 간단합니다. 그러나 배열이 더 복잡해지고 특히 다차원 배열이되면 상황이 다릅니다.
다차원 배열에서 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 () 함수를 사용하여 이러한 최대 값의 최대 값을 얻으십시오.
때때로, 다차원 배열의 데이터는 연관 배열이며, 각 서브 어레이에는 특정 키 (예 : "score")가 있으며 특정 키의 값에서 최대 값을 찾고자합니다. 이 경우 array_column () 은 매우 유용합니다. 다차원 배열에서 모든 서브 어레이의 지정된 열을 추출한 다음 max () 함수와 함께 사용할 수 있습니다. 예는 다음과 같습니다.
<span><span><span class="hljs-variable">$array</span></span><span> = [
[</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Alice'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">85</span></span><span>],
[</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Bob'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">90</span></span><span>],
[</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Charlie'</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </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 () 함수를 사용하여 최대 점수를 찾습니다.
배열의 중첩 레벨이 더 깊어지면 재귀 방법을 사용하여 처리 할 수 있습니다. 재귀 함수는 다차원 배열을 통해 반복하고 최대 값을 찾는 데 사용될 수 있습니다. 재귀 방법의 예는 다음과 같습니다.
<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>
이 방법은 배열의 각 층을 재귀 적으로 가로 지릅니다. 현재 값이 배열 인 경우 다음 레이어로 이동하여 계속 비교합니다. 숫자 값 인 경우 현재 최대 값과 비교됩니다. 마지막으로, 전체 다차원 배열의 최대 값이 반환됩니다.