Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mencari Nilai Minimum dan Maksimum dengan Cekap dalam Tatasusunan PHP Bersarang?

Bagaimana Mencari Nilai Minimum dan Maksimum dengan Cekap dalam Tatasusunan PHP Bersarang?

Barbara Streisand
Barbara Streisandasal
2024-10-26 15:04:02399semak imbas

How to Efficiently Find Minimum and Maximum Values in a Nested PHP Array?

Dapatkan Nilai Minimum dan Maksimum daripada Tatasusunan PHP

Masalah:

Memandangkan tatasusunan PHP bersarang, tentukan cara untuk cekap ekstrak nilai minimum dan maksimum untuk kunci tertentu.

Contoh:

<code class="php">$array = [
    [
        'id' => '20110209172713',
        'Date' => '2011-02-09',
        'Weight' => '200',
    ],
    [
        'id' => '20110209172747',
        'Date' => '2011-02-09',
        'Weight' => '180',
    ],
    [
        'id' => '20110209172827',
        'Date' => '2011-02-09',
        'Weight' => '175',
    ],
    [
        'id' => '20110211204433',
        'Date' => '2011-02-11',
        'Weight' => '195',
    ],
];</code>

Penyelesaian:

Pilihan 1: Menggunakan array_column() dan min()/max()

Kaedah ini memanfaatkan fungsi array_column() untuk mengekstrak nilai 'Weight' ke dalam tatasusunan berangka. Fungsi min() dan max() kemudiannya digunakan untuk menentukan nilai minimum dan maksimum, masing-masing.

<code class="php">$weights = array_column($array, 'Weight');
$minValue = min($weights);
$maxValue = max($weights);</code>

Pilihan 2: Menggunakan array_map()

Sama seperti Pilihan 1, kaedah ini menggunakan array_map() untuk mengekstrak nilai 'Berat'. Walau bagaimanapun, ia memerlukan fungsi tersuai untuk melaksanakan pemetaan.

<code class="php">$weights = array_map(function($item) {
    return $item['Weight'];
}, $array);

$minValue = min($weights);
$maxValue = max($weights);</code>

Pilihan 3 (tidak digunakan lagi): Menggunakan gelung bersarang

Kaedah ini tidak disyorkan kerana sedia ada agak tidak cekap, terutamanya untuk tatasusunan yang besar.

<code class="php">$minValue = INF;
$maxValue = -INF;

foreach ($array as $item) {
    if ($item['Weight'] < $minValue) {
        $minValue = $item['Weight'];
    }

    if ($item['Weight'] > $maxValue) {
        $maxValue = $item['Weight'];
    }
}</code>

Pilihan 4: Menggunakan array_reduce()

Kaedah ini berguna untuk senario tertentu di mana anda perlu melakukan pengiraan tambahan atau pemprosesan sambil menentukan nilai minimum atau maksimum.

<code class="php">$minValue = array_reduce($array, function($min, $item) {
    return min($min, $item['Weight']);
}, PHP_INT_MAX);

$maxValue = array_reduce($array, function($max, $item) {
    return max($max, $item['Weight']);
}, -PHP_INT_MAX);</code>

Atas ialah kandungan terperinci Bagaimana Mencari Nilai Minimum dan Maksimum dengan Cekap dalam Tatasusunan PHP Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn