날씨 값이 포함 된 배열이 있습니다. 이제 온도로 배열을 정렬하고 온도에 대한 최대 값을 꺼내 작업 PHP 스크립트를 가지고, 나는 다시 압력으로 배열을 정렬하고 최대 압력 값을 얻을.usort와 함께 사용할 때 함수를 결합 하시겠습니까?
function compare_pressure($a, $b)
{
return strnatcmp($a['pressure'], $b['pressure']);
}
function compare_temp($a, $b)
{
return strnatcmp($a['temp'], $b['temp']);
}
usort($table, 'compare_pressure');
$mypress = $table[0]['pressure'];
usort($table, 'compare_temp');
$mytemp = $table[0]['temp'];
내가 지금은 각각의 비교를위한 새로운 하나를 작성 유지해야 그나마 있도록 위의 기능을 결합하기 위해 노력하고 있어요,하지만 난에 usort와 함께 사용할 때 운이있을 것 같다하지 않습니다. 당신은 단지 최대 필요한 경우
// Method 1 -- by object
class Comparitor {
public function __construct($key) {
$this->key = $key;
}
public function compare($a, $b) {
return strnatcmp($a[$this->key], $b[$this->key]);
}
}
usort($table, [new Comparitor('temp'), 'compare']);
// Method 2 -- anonymous function
function compare_by_key($a, $b, $key) {
return strnatcmp($a[$key], $b[$key]);
}
usort($table, function ($a, $b) { return compare_by_key($a, $b, 'temp'); });
// Method 3 -- by global
function compare_by_global_key($a, $b) {
global $key;
return strnatcmp($a[$key], $b[$key]);
}
$key = 'temp';
usort($table, 'compare_by_global_key');
것은, 당신이 사용할 수 있습니다
나는 우선 순위의 방법 일 :(
function compare_temp($a, $b, $value)
{
return strnatcmp($a[$value], $b[$value]);
}
usort($table, 'compare_temp', 'temp');
왜 두 번 정렬합니까? 당신은 단지 배열을 foreach() 할 수 있고'if ($ cur> $ prev)'를 사용하여 압력과 온도 값을 테스트 할 수 있습니다. 배열이 2 개의 본격적인 배열이 아닌 1 개의 루프 루프 –
배열을 배열하는 데 가장 좋은 방법이 될까요? 배열에는 약 300 개의 항목으로 정렬해야하는 약 15 개의 값이 있습니다. 나는 15 개의 값을 정렬하는 것보다 쉽게 만들 수 있다고 생각한다. – Greg