Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ciri lanjutan PHP: penerokaan tatasusunan dan koleksi yang mendalam

Ciri lanjutan PHP: penerokaan tatasusunan dan koleksi yang mendalam

PHPz
PHPzasal
2024-06-04 12:55:57236semak imbas

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 lanjutan PHP: penerokaan tatasusunan dan koleksi yang mendalam

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

  1. Tatasusunan berbilang dimensi

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";
});
  1. 关联数组

关联数组使用键名与值进行关联,便于根据键名快速查找和检索值。PHP提供了=====等比较运算符,用于比较关联数组中的值。

$assoc = array(
    'name' => 'John Doe',
    'age' => 30
);

if ($assoc['name'] == 'John Doe') {
    echo 'Name matches';
}
  1. 数组函数

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来实现高级集合操作。

  1. 创建集合

可以使用Collection::make()方法创建Collection对象。

$collection = Collection::make(['foo', 'bar', 'baz']);
  1. 过滤和映射集合

Collection类提供了filter()map()方法,分别用于过滤和映射集合中的元素。

$filteredCollection = $collection->filter(function($item) {
    return is_string($item);
});

$mappedCollection = $collection->map(function($item) {
    return strtoupper($item);
});
  1. 聚合集合

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";
        }
    });

      Fungsi tatasusunan

      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. 🎜rrreee
        🎜🎜Menapis dan memetakan koleksi🎜🎜🎜🎜 KelasKoleksi menyediakan penapis() dan peta() kod > kaedah, digunakan untuk menapis dan memetakan elemen dalam koleksi masing-masing. 🎜rrreee
          🎜🎜Koleksi pengagregatan🎜🎜🎜🎜 KelasKoleksi juga menyediakan jumlah(), purata() Kaedah pengagregatan seperti reduce() 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🎜🎜rrreee

    Atas 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!

    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