Rumah pembangunan bahagian belakang masalah PHP Kaedah penapisan untuk tatasusunan pelbagai dimensi php

Kaedah penapisan untuk tatasusunan pelbagai dimensi php

Apr 18, 2023 am 09:47 AM

Memproses data dalam PHP ialah keperluan yang sangat biasa, dan tatasusunan berbilang dimensi ialah salah satu daripada struktur data biasa. Walau bagaimanapun, apabila menggunakan tatasusunan berbilang dimensi, kami tidak boleh mengelak daripada melakukan beberapa operasi penapisan data untuk memastikan ketepatan dan kesahihan data. Artikel ini akan memperkenalkan kaedah penapisan tatasusunan berbilang dimensi dalam PHP.

1. Kaedah penapisan array_map

array_map() ialah fungsi yang disediakan oleh PHP yang boleh menghantar setiap elemen dalam satu atau lebih tatasusunan kepada fungsi panggil balik tersuai yang ditentukan Dan mengembalikan tatasusunan baharu, iaitu elemen yang merupakan elemen yang diproses oleh fungsi panggil balik.

Kita boleh menggunakan fungsi array_map() untuk melaksanakan penapisan tatasusunan berbilang dimensi. Kaedah khusus adalah dengan terlebih dahulu melintasi tatasusunan berbilang dimensi, menghantar elemen yang perlu ditapis ke fungsi penapis untuk pemprosesan, dan kemudian menyimpan hasil yang diproses ke tatasusunan baharu. Berikut ialah contoh mudah:

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter($item) {
    if (!is_array($item)) { 
        return trim($item); // 非数组的元素进行trim()处理
    } else { 
        return array_map('filter', $item); // 数组的元素递归调用filter()函数进行处理
    }
}

$new_data = array_map('filter', $data); // 过滤后的多维数组
Salin selepas log masuk

Dalam contoh di atas, kami mentakrifkan penapis fungsi penapis(), yang menentukan sama ada elemen itu ialah tatasusunan dan memanggil trim() yang disediakan oleh PHP pada bukan tatasusunan elemen. Fungsi menjalankan pemprosesan, secara rekursif memanggil dirinya sendiri untuk memproses elemen tatasusunan, dan akhirnya menyimpan hasil yang diproses ke tatasusunan $new_data baharu melalui fungsi array_map().

2. Kaedah penapisan array_walk_recursive

array_walk_recursive() ialah fungsi yang disediakan oleh PHP Ia boleh menggunakan fungsi yang ditentukan pengguna untuk setiap elemen dalam tatasusunan berbilang dimensi : Parameter pertama ialah nilai elemen semasa, dan parameter kedua ialah nama kunci elemen semasa. Untuk menapis data tatasusunan, kita boleh menggunakan fungsi ini untuk melintasi unsur-unsur dalam tatasusunan secara rekursif satu demi satu, dan kemudian memproses unsur-unsur yang perlu ditapis. Berikut ialah kod sampel:

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter(&$value, $key) {
    if (is_string($value)) {
        $value = trim($value); // 对字符串类型进行trim()处理
    }
}

array_walk_recursive($data, 'filter'); // 过滤后的多维数组
Salin selepas log masuk

Dalam contoh di atas, kami mentakrifkan penapis fungsi panggil balik(), yang menerima dua parameter Parameter pertama $value ialah nilai elemen semasa dan parameter kedua Parameter pertama $key ialah nama kunci bagi elemen semasa. Gunakan fungsi is_string() untuk menentukan sama ada elemen semasa adalah daripada jenis rentetan Jika ya, panggil fungsi trim() yang disediakan oleh PHP untuk diproses.

Selepas fungsi penapis ditakrifkan, kami melaksanakan operasi traversal pada tatasusunan berbilang dimensi dengan memanggil fungsi array_walk_recursive(), hantar setiap elemen ke fungsi panggil balik untuk pemprosesan, dan akhirnya mendapatkan hasil yang ditapis.

3. Kaedah penapisan array_filter

array_filter() ialah fungsi yang disediakan oleh PHP yang boleh menapis tatasusunan yang diberikan mengikut fungsi panggil balik yang ditentukan. Ia berulang melalui setiap elemen dalam tatasusunan dan menggunakan fungsi panggil balik untuk setiap elemen Nilai pulangan ialah tatasusunan elemen yang menilai kepada BENAR dalam fungsi panggil balik.

Kita boleh menggunakan fungsi array_filter() untuk menapis tatasusunan berbilang dimensi. Kaedah khusus adalah untuk melintasi elemen dalam tatasusunan berbilang dimensi dan menyimpan elemen yang memenuhi syarat penapisan ke dalam tatasusunan baharu. Berikut ialah contoh mudah:

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter($item) {
    return (strlen($item['name']) > 2); // 过滤满足条件的元素
}

$new_data = array_filter($data, 'filter'); // 过滤后的多维数组
Salin selepas log masuk

Dalam contoh di atas, kami mentakrifkan penapis fungsi panggil balik(), yang digunakan untuk memproses elemen yang perlu ditapis. Dalam fungsi penapis(), kami mengembalikan TRUE untuk elemen yang memenuhi syarat tertentu (di sini panjang 'nama' lebih besar daripada 2), jika tidak, kami mengembalikan FALSE. Selepas fungsi penapis ditakrifkan, kami memanggil fungsi array_filter() dan lulus tatasusunan untuk ditapis dan fungsi penapis untuk mendapatkan hasil yang ditapis.

Ringkasnya, kita boleh menggunakan pelbagai kaedah untuk menapis tatasusunan berbilang dimensi, termasuk fungsi seperti array_map(), array_walk_recursive() dan array_filter(). Kaedah yang hendak dipilih bergantung pada senario dan keperluan aplikasi tertentu.

Atas ialah kandungan terperinci Kaedah penapisan untuk tatasusunan pelbagai dimensi php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menggunakan tugas-tugas asynchronous dalam PHP untuk operasi tidak menyekat? Bagaimana untuk menggunakan tugas-tugas asynchronous dalam PHP untuk operasi tidak menyekat? Mar 10, 2025 pm 04:21 PM

Artikel ini meneroka pelaksanaan tugas tak segerak dalam PHP untuk meningkatkan respons aplikasi web. Ia memperincikan kaedah seperti beratur mesej, rangka kerja asynchronous (reactphp, swoole), dan proses latar belakang, menekankan amalan terbaik untuk kecekapan

Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP? Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP? Mar 10, 2025 pm 06:15 PM

Butiran artikel ini melaksanakan beratur mesej dalam PHP menggunakan RabbitMQ dan Redis. Ia membandingkan seni bina mereka (AMQP vs dalam memori), ciri-ciri, dan mekanisme kebolehpercayaan (pengesahan, urus niaga, kegigihan). Amalan terbaik untuk reka bentuk, kesilapan

Apakah piawaian pengekodan PHP terkini dan amalan terbaik? Apakah piawaian pengekodan PHP terkini dan amalan terbaik? Mar 10, 2025 pm 06:16 PM

Artikel ini mengkaji piawaian pengekodan PHP semasa dan amalan terbaik, memberi tumpuan kepada cadangan PSR (PSR-1, PSR-2, PSR-4, PSR-12). Ia menekankan peningkatan kebolehbacaan dan kebolehkerjaan kod melalui gaya yang konsisten, penamaan bermakna, dan EFF

Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP? Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP? Mar 10, 2025 pm 06:12 PM

Artikel ini menerangkan API Refleksi PHP, membolehkan pemeriksaan runtime dan manipulasi kelas, kaedah, dan sifat. IT memperincikan kes penggunaan biasa (penjanaan dokumentasi, ORM, suntikan pergantungan) dan memberi amaran terhadap prestasi overhea

Bagaimana saya bekerja dengan sambungan php dan pecl? Bagaimana saya bekerja dengan sambungan php dan pecl? Mar 10, 2025 pm 06:12 PM

Butiran artikel ini memasang dan menyelesaikan masalah PHP, memberi tumpuan kepada PECL. Ia meliputi langkah pemasangan (mencari, memuat turun/menyusun, membolehkan, memulakan semula pelayan), teknik penyelesaian masalah (memeriksa log, mengesahkan pemasangan,

PHP 8 JIT (Just-in-Time) Penyusunan: Bagaimana ia meningkatkan prestasi. PHP 8 JIT (Just-in-Time) Penyusunan: Bagaimana ia meningkatkan prestasi. Mar 25, 2025 am 10:37 AM

Kompilasi JIT Php 8 meningkatkan prestasi dengan menyusun kod yang sering dilaksanakan ke dalam kod mesin, memberi manfaat kepada aplikasi dengan pengiraan berat dan mengurangkan masa pelaksanaan.

Bagaimana cara menggunakan teknik pengoptimuman memori dalam PHP? Bagaimana cara menggunakan teknik pengoptimuman memori dalam PHP? Mar 10, 2025 pm 04:23 PM

Artikel ini menangani pengoptimuman memori PHP. IT memperincikan teknik seperti menggunakan struktur data yang sesuai, mengelakkan penciptaan objek yang tidak perlu, dan menggunakan algoritma yang cekap. Sumber kebocoran memori biasa (mis., Sambungan yang tidak terkawal, global v

Bagaimanakah saya tetap up-to-date dengan ekosistem dan komuniti php? Bagaimanakah saya tetap up-to-date dengan ekosistem dan komuniti php? Mar 10, 2025 pm 06:16 PM

Artikel ini meneroka strategi untuk kekal semasa dalam ekosistem PHP. Ia menekankan penggunaan saluran rasmi, forum komuniti, persidangan, dan sumbangan sumber terbuka. Penulis menyoroti sumber terbaik untuk mempelajari ciri -ciri baru dan a

See all articles