Rumah >pembangunan bahagian belakang >tutorial php >Ciri lanjutan PHP: penerokaan tatasusunan dan koleksi yang mendalam
PHP menyediakan tatasusunan berbilang dimensi dan tatasusunan bersekutu, dan satu siri fungsi tatasusunan. Kelas koleksi menyediakan API yang mudah digunakan untuk melaksanakan operasi pengumpulan lanjutan, termasuk mencipta, menapis, memetakan dan mengagregatkan koleksi. Anda boleh menggunakan ciri ini untuk membina struktur pokok, menapis dan memetakan data serta melaksanakan operasi pengagregatan.
Ciri Termaju PHP: Penerokaan Mendalam Tatasusunan dan Koleksi
PHP menyediakan satu siri operasi tatasusunan dan pengumpulan yang berkuasa dan fleksibel, membolehkan pembangun mengurus dan memproses struktur data yang kompleks dengan berkesan. Artikel ini akan menyelidiki ciri lanjutan tatasusunan dan koleksi PHP dan menyediakan contoh praktikal dunia sebenar untuk membantu anda memanfaatkan sepenuhnya ciri ini.
1. Ciri tatasusunan
PHP menyokong tatasusunan berbilang dimensi, membenarkan penciptaan struktur data bersarang. Anda boleh menggunakan array_walk_recursive()
untuk menjalankan tatasusunan berbilang dimensi secara rekursif atau array_reduce()
untuk melaksanakan operasi pengurangan. array_walk_recursive()
递归遍历多维数组,或者使用array_reduce()
进行归约操作。
$tree = array( 'level1' => array( 'level2' => array( 'data' => 'value' ) ) ); array_walk_recursive($tree, function($value, $key) { echo "$key: $value\n"; });
关联数组使用键名与值进行关联,便于根据键名快速查找和检索值。PHP提供了、
==
和===
等比较运算符,用于比较关联数组中的值。
$assoc = array( 'name' => 'John Doe', 'age' => 30 ); if ($assoc['name'] == 'John Doe') { echo 'Name matches'; }
PHP提供了一系列内置的数组函数,用于操纵数组,如array_merge()
(合并数组)、array_filter()
(过滤数组)、array_map()
(映射数组)等。
$numbers = array(1, 2, 3, 4, 5); $filteredNumbers = array_filter($numbers, function($num) { return $num % 2 == 0; });
二、集合类
除了原生数组,PHP还引入了Collection
类,提供了一组易于使用的API来实现高级集合操作。
可以使用Collection::make()
方法创建Collection
对象。
$collection = Collection::make(['foo', 'bar', 'baz']);
Collection
类提供了filter()
和map()
方法,分别用于过滤和映射集合中的元素。
$filteredCollection = $collection->filter(function($item) { return is_string($item); }); $mappedCollection = $collection->map(function($item) { return strtoupper($item); });
Collection
类还提供了sum()
、average()
和reduce()
$sum = $collection->sum(); $average = $collection->average();
Tatasusunan bersekutu
Tatasusunan bersekutu menggunakan nama kunci untuk mengaitkan nilai, menjadikannya mudah untuk mencari dan mendapatkan nilai dengan cepat berdasarkan nama kunci. PHP menyediakan operator perbandingan seperti ,
==
dan ===
untuk membandingkan nilai dalam tatasusunan bersekutu. $tree = array();
$tree['root'] = array(
'left' => array(
'data' => 'left branch'
),
'right' => array(
'data' => 'right branch'
)
);
array_walk_recursive($tree, function($value, $key) {
if ($value != 'root') {
echo "$key: $value\n";
}
});
PHP menyediakan satu siri fungsi tatasusunan terbina dalam untuk memanipulasi tatasusunan, seperti
array_merge()
(tatasusunan menggabungkan), array_filter() (tatasusunan penapisan), array_map()
(tatasusunan pemetaan), dsb. 🎜$users = [ ['name' => 'John Doe', 'age' => 30], ['name' => 'Jane Doe', 'age' => 25], ]; $collection = Collection::make($users); $filteredCollection = $collection->filter(function($user) { return $user['age'] > 25; }); $mappedCollection = $collection->map(function($user) { return $user['name']; });🎜🎜2. Kelas koleksi🎜🎜🎜Selain tatasusunan asli, PHP juga memperkenalkan kelas
Collection
, yang menyediakan satu set API yang mudah digunakan untuk melaksanakan operasi pengumpulan lanjutan. 🎜🎜🎜🎜Buat koleksi 🎜🎜🎜🎜 Anda boleh menggunakan kaedah Collection::make()
untuk mencipta objek Collection
. 🎜rrreeereduce()
digunakan untuk mengira nilai ringkasan daripada koleksi. 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜🎜Bina struktur pokok menggunakan tatasusunan berbilang dimensi🎜🎜rrreee🎜🎜Gunakan set untuk menapis dan memetakan data🎜🎜rrreeeAtas ialah kandungan terperinci Ciri lanjutan PHP: penerokaan tatasusunan dan koleksi yang mendalam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!