Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mendapatkan nombor pertama elemen tatasusunan berbilang dimensi dalam php

Bagaimana untuk mendapatkan nombor pertama elemen tatasusunan berbilang dimensi dalam php

PHPz
PHPzasal
2023-04-26 09:16:59816semak imbas

PHP ialah bahasa skrip sebelah pelayan sumber terbuka yang popular digunakan secara meluas dalam bidang pembangunan web. Tatasusunan dalam PHP ialah struktur data yang sangat berkuasa yang menyokong tatasusunan berbilang dimensi dan boleh digunakan untuk menyimpan dan memproses jenis data yang kompleks. Dalam pembangunan sebenar, kita selalunya perlu beroperasi pada tatasusunan berbilang dimensi, contohnya, mengeluarkan beberapa elemen pertama tatasusunan.

Dalam PHP, kita boleh menggunakan berbilang fungsi terbina dalam untuk beroperasi pada tatasusunan berbilang dimensi. Di bawah, saya akan memperkenalkan beberapa kaedah biasa untuk mencapai fungsi mengalih keluar beberapa elemen pertama tatasusunan berbilang dimensi.

Kaedah 1: Gunakan fungsi array_slice

Fungsi array_slice boleh mengalih keluar elemen berterusan daripada tatasusunan dan mengembalikan tatasusunan baharu yang terdiri daripada elemen ini. Sintaksnya adalah seperti berikut:

array array_slice ( array $array , int $offset , int|null $length = null , bool $preserve_keys = false )

Antaranya, $array mewakili tatasusunan asal untuk dikendalikan; $offset mewakili kedudukan dari mana untuk mula mengambil nilai, yang boleh menjadi nombor negatif, menunjukkan elemen terakhir dari hujung tatasusunan Nilai $length mewakili bilangan elemen yang akan diambil, yang boleh menjadi batal, menunjukkan bahawa semua elemen dari $offset hingga akhir tatasusunan diambil semula; nama kunci tatasusunan asal. Lalai adalah palsu, yang bermaksud tidak mengekalkan.

Berikut ialah kod sampel yang menggunakan fungsi array_slice untuk mengalih keluar beberapa elemen pertama tatasusunan berbilang dimensi:

function array_multi_slice($array, $count) {
    //计算数组的总长度
    $total = count($array, COUNT_NORMAL);
    //如果要取出的元素个数小于等于总长度,则直接通过array_slice函数取值
    if($count <= $total) {
        return array_slice($array, 0, $count, true);
    }
    //否则,需要遍历二维数组取值
    $result = array();
    foreach($array as $key => $value) {
        if($count == 0) break;
        if(is_array($value)) {
            //如果是二维数组,则递归调用array_multi_slice函数取值
            $temp = array_multi_slice($value, $count);
            foreach($temp as $k => $v) {
                $result[$key][$k] = $v;
            }
            $count -= count($temp, COUNT_NORMAL);
        } else {
            //如果是普通数组,则直接取值
            $result[$key] = $value;
            $count--;
        }
    }
    return $result;
}

Dalam kod ini, kami mula-mula mengira jumlah panjang array $total, Jika bilangan elemen yang akan dikeluarkan, $count, adalah kurang daripada atau sama dengan $total, hanya gunakan fungsi array_slice untuk mendapatkan nilai dan mengembalikan hasilnya. Jika tidak, kita perlu merentasi tatasusunan dua dimensi untuk mendapatkan nilai.

Apabila merentasi tatasusunan dua dimensi, kita mula-mula menentukan sama ada elemen semasa $value ialah tatasusunan dua dimensi Jika ya, panggil fungsi array_multi_slice secara rekursif untuk mendapatkan semula nilai dan menyimpan hasilnya dalam $result. array; jika tidak, Kemudian simpan elemen terus dalam tatasusunan $result. Semasa proses traversal, kita perlu terus mengurangkan nilai $count sehingga bilangan elemen yang dikehendaki dikeluarkan.

Kaedah 2: Gunakan fungsi array_chunk

Fungsi array_chunk boleh membahagikan tatasusunan kepada berbilang blok mengikut saiz yang ditentukan, setiap blok membentuk tatasusunan baharu dan mengembalikan tatasusunan dua dimensi. Sintaksnya adalah seperti berikut:

array array_chunk ( array $array , int $size , bool $preserve_keys = false )

Antaranya, $array mewakili tatasusunan asal yang akan dikendalikan; $size mewakili saiz setiap blok $preserve_keys mewakili sama ada untuk mengekalkan nama kunci tatasusunan asal; . Lalai adalah palsu, yang bermaksud Tidak dikhaskan.

Berikut ialah kod sampel yang menggunakan fungsi array_chunk untuk mengalih keluar beberapa elemen pertama tatasusunan berbilang dimensi:

function array_multi_chunk($array, $count) {
    $temp = array();
    foreach($array as $key => $value) {
        if(is_array($value)) {
            //如果是二维数组,则递归调用array_multi_chunk函数分割
            $result = array_multi_chunk($value, $count);
            foreach($result as $k => $v) {
                if(!isset($temp[$k])) {
                    $temp[$k] = array();
                }
                $temp[$k] += $v;
            }
        } else {
            //如果是普通数组,则直接存储
            $temp[(int)($key/$count)][$key] = $value;
        }
    }
    return $temp;
}

Dalam kod ini, kita mula-mula melintasi dua dimensi tatasusunan. Jika elemen semasa $ Jika nilai ialah tatasusunan dua dimensi, panggil fungsi tatasusunan_multi_chunk secara rekursif untuk memisahkannya, dan simpan hasilnya dalam tatasusunan $temp jika ia tatasusunan biasa, simpan terus dalam tatasusunan $temp . Apabila menyimpan elemen tatasusunan, kami menentukan blok mana elemen itu dimiliki dengan mengira $key/$count, dan menyimpannya dalam tatasusunan yang sepadan.

Akhir sekali, kami mengembalikan tatasusunan $temp. Perlu diingat bahawa apabila membelah tatasusunan dua dimensi, kerana bilangan elemen dalam setiap sub-susun tidak semestinya sama, panjang setiap sub-susun mungkin berbeza.

Ringkasnya, kita boleh menggunakan fungsi array_slice atau fungsi array_chunk untuk mengalih keluar beberapa elemen pertama tatasusunan berbilang dimensi. Pemilihan kaedah khusus hendaklah ditentukan berdasarkan situasi sebenar.

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan nombor pertama elemen tatasusunan berbilang dimensi dalam php. 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