Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 2908|Jawab: 0

Postingan pendatang baru, PHP merangkum 6 cara untuk melintasi array

[Salin tautan]
Diposting pada 08/06/2022 15.56.10 | | |


Dalam operasi harian PHP, array adalah struktur yang paling umum, dan kami berurusan dengan konten terkait array hampir setiap hari. Jadi pertanyaannya adalah, bagaimana Anda melintasi dan memproses array secara umum.


1、untukmasing-masing
Sudah tidak asing lagi, bukankah ini favoritmu?
$arr = ['a', 'b', 'c'];
foreach ($arr sebagai $key => $value) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


2、array_map
Gunakan fungsi anonim untuk menangani setiap elemen dalam array. Array baru dikembalikan saat traversal selesai
$arr = ['a', 'b', 'c'];
$arr = array_map(fungsi ($item) {
    kembali $item . '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Anda dapat bekerja dengan beberapa array secara bersamaan
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['Anda', 'baik', 'adalah', 'asli', 'dosa'];
$arr_n = [...];
$arr = array_map(fungsi ($item_1, $item_2) {
    Kembali $item_1 . '_' . $item_2 . '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ you _i', 'b_ is good_i', 'Are you c__i', '_original _i', '_sin_i']
Ya, jumlah traversal didasarkan pada array terpanjang.
Setelah melintasi 3 kali, $arr_1 benar-benar selesai, sehingga nilai $item_1 menjadi null setelah itu


3、array_walk
Melintasi array Anda sebagai pass referensi tidak memiliki nilai pengembalian dan hanya dapat memproses satu array.
$arr = ['a', 'b', 'c'];
array_walk($arr, fungsi (&$item) {
    $item = $item . '_i';
});


print_r($arr); ['a_i', 'b_i', 'c_i'];
Perhatikan &$item, ya, ada tambahan &, yang berarti parameter Anda menerima data dengan referensi. Yang harus Anda lakukan adalah menemukan cara untuk mengubah parameter ini.


Jika Anda berhadapan dengan array dua dimensi, metode pemrosesannya juga tidak dapat dipisahkan.
$arr = [
    ['nama' => 'a'],
    ['nama' => 'b'],
    ['nama' => 'c']
];
array_walk($arr, fungsi (&$item) {
    $item['nama'] = $item['nama'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];


4、 untuk
Ini harus menjadi sintaks super generik
$arr = ['a', 'b', 'c'];
untuk ($i = 0; $i < hitungan ($arr); ++$i) {
    $arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Tidak disarankan. Ini tidak seefisien foreach. Dan metode penulisannya sedikit lebih rumit daripada forreach.


5 、 masing-masing
Haha, fungsi ini telah ditinggalkan di @deprecated PHP7.2 dan terasa sangat kuno. Efisiensi eksekusi metode penulisan ini juga tidak baik, dan pemula harus langsung menyerah.
$arr = ['a', 'b', 'c'];
sementara (list($key, $value) = masing-masing($arr)) {
    $arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


6 、 mengatur ulang
Tepatnya, ini bukan hanya fungsi untuk mengatur ulang, tetapi juga kombinasi dari beberapa fungsi bawaan, yang pada dasarnya tidak digunakan untuk menulis kode
$arr = ['a', 'b', 'c'];
reset() ke kepala, sebenarnya defaultnya adalah menunjuk ke awal, Anda dapat mengabaikan kalimat ini
reset($arr);
current() untuk mendapatkan nilai elemen penunjuk saat ini
sementara ($value = arus($arr)) {
    key() untuk mendapatkan subskrip elemen dari penunjuk saat ini
    $arr[kunci($arr)] = $value . '_i';
    next() penunjuk ke penunjuk berikutnya
    berikutnya($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];





Mantan:[Pertempuran Praktis] Mengemas ASP.NET Inti ke dalam Masalah Batas Waktu NUGET Gambar
Depan:Editor Kindeditor Ekstensi Gambar Unggah Massal (Tidak Ada Ketergantungan Flash)
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com