Gunakan fungsi array_walk_recursive() PHP untuk melaksanakan fungsi panggil balik pada setiap elemen dalam tatasusunan berbilang dimensi

WBOY
Lepaskan: 2023-11-04 13:26:01
asal
553 orang telah melayarinya

Gunakan fungsi array_walk_recursive() PHP untuk melaksanakan fungsi panggil balik pada setiap elemen dalam tatasusunan berbilang dimensi

Fungsi array_walk_recursive() dalam PHP boleh merentasi setiap elemen dalam tatasusunan berbilang dimensi dan memanggil fungsi panggil balik yang ditentukan untuk beroperasi padanya. Artikel ini akan menunjukkan cara menggunakan fungsi ini melalui contoh kod tertentu.

Pertama, mari kita cipta tatasusunan berbilang dimensi untuk menunjukkan penggunaan fungsi array_walk_recursive(). Tatasusunan mengandungi beberapa maklumat pelajar, seperti nama, umur dan gred. Kodnya adalah seperti berikut:

$students = array(
    array(
        'name' => '张三',
        'age' => 18,
        'scores' => array(80, 85, 90),
    ),
    array(
        'name' => '李四',
        'age' => 19,
        'scores' => array(75, 78, 82),
    ),
    array(
        'name' => '王五',
        'age' => 20,
        'scores' => array(90, 95, 88),
    ),
);
Salin selepas log masuk

Seterusnya, kami mentakrifkan fungsi panggil balik yang menambahkan purata skor pelajar kepada setiap maklumat pelajar. Kodnya adalah seperti berikut:

function calculateAverage(&$value, $key)
{
    if ($key === 'scores') {
        $average = array_sum($value) / count($value);
        $value['average'] = $average;
    }
}
Salin selepas log masuk

Dalam fungsi panggil balik di atas, kami mula-mula menentukan sama ada kunci elemen semasa ialah 'skor' Jika ya, hitung purata skor pelajar dan tambahkannya pada tatasusunan maklumat pelajar.

Akhir sekali, kita boleh menggunakan fungsi array_walk_recursive() untuk melintasi tatasusunan berbilang dimensi dan memanggil fungsi panggil balik yang kami takrifkan untuk setiap elemen. Kod tersebut adalah seperti berikut:

array_walk_recursive($students, 'calculateAverage');
Salin selepas log masuk

Selepas melaksanakan kod di atas, kunci 'purata' akan ditambahkan pada setiap maklumat pelajar dalam tatasusunan $pelajar, yang sepadan dengan purata skor pelajar. Kita boleh mengesahkan hasilnya dengan mencetak tatasusunan. Kodnya adalah seperti berikut:

print_r($students);
Salin selepas log masuk

Hasil keluaran adalah seperti berikut:

Array
(
    [0] => Array
        (
            [name] => 张三
            [age] => 18
            [scores] => Array
                (
                    [0] => 80
                    [1] => 85
                    [2] => 90
                    [average] => 85
                )

        )

    [1] => Array
        (
            [name] => 李四
            [age] => 19
            [scores] => Array
                (
                    [0] => 75
                    [1] => 78
                    [2] => 82
                    [average] => 78.33333333333333
                )

        )

    [2] => Array
        (
            [name] => 王五
            [age] => 20
            [scores] => Array
                (
                    [0] => 90
                    [1] => 95
                    [2] => 88
                    [average] => 91
                )

        )

)
Salin selepas log masuk

Dapat dilihat bahawa purata markah setiap pelajar telah berjaya ditambahkan pada tatasusunan maklumat pelajar yang sepadan.

Ringkasan: Artikel ini memperkenalkan melalui contoh kod khusus cara menggunakan fungsi array_walk_recursive() PHP untuk melaksanakan fungsi panggil balik pada setiap elemen dalam tatasusunan berbilang dimensi. Melalui contoh di atas, kita boleh melintasi dan mengendalikan tatasusunan berbilang dimensi secara fleksibel untuk mencapai pelbagai fungsi yang diperlukan.

Atas ialah kandungan terperinci Gunakan fungsi array_walk_recursive() PHP untuk melaksanakan fungsi panggil balik pada setiap elemen dalam tatasusunan berbilang dimensi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!