Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah php mengekstrak unsur tatasusunan berbilang dimensi?

Bolehkah php mengekstrak unsur tatasusunan berbilang dimensi?

PHPz
PHPzasal
2023-04-26 14:23:40467semak imbas

PHP ialah bahasa pengaturcaraan bahagian pelayan yang digunakan secara meluas yang fleksibel dan mudah digunakan. Dalam pengaturcaraan PHP, kita selalunya perlu beroperasi pada tatasusunan berbilang dimensi Contohnya, jika sesuatu elemen dalam tatasusunan mempunyai lebih daripada satu nilai, kita perlu mengekstrak nilainya dan menggunakannya. Jadi, apakah kaedah untuk mengekstrak tatasusunan berbilang dimensi dalam PHP?

  1. Gunakan gelung untuk mengekstrak

Menggunakan gelung untuk melintasi tatasusunan berbilang dimensi ialah kaedah biasa Ia boleh merentasi semua elemen, menentukan kedudukan elemen diekstrak, dan kemudian tambah nilainya Simpan dalam tatasusunan atau pembolehubah baharu. Sebagai contoh, kami mempunyai tatasusunan dua dimensi seperti berikut:

$students = array(
    array('name' => 'Tom', 'age' => 20),
    array('name' => 'Lucy', 'age' => 22),
    array('name' => 'Sam', 'age' => 21)
);

Jika anda ingin mengekstrak umur pelajar yang $name ialah 'Lucy', anda boleh menggunakan kod berikut:

foreach($students as $student){
   if($student['name'] == 'Lucy'){
      $age = $student['age'];
      break;
   }
}

Dalam kod di atas , dengan merentasi tatasusunan $pelajar, tentukan sama ada $name ialah 'Lucy', dan jika ya, simpan $umur pelajar dalam pembolehubah $age.

  1. Gunakan fungsi array_column untuk mengekstrak tatasusunan bersekutu

Fungsi array_column() sangat praktikal apabila mengekstrak tatasusunan bersekutu dua dimensi Ia boleh mengekstrak nilai secara langsung sepadan dengan nama kunci tertentu, penggunaan adalah seperti berikut:

array_column($input, 'column_key');

Parameter $input ialah tatasusunan dua dimensi dan 'column_key' mewakili nama kunci yang akan diekstrak. Untuk mengekstrak nama pelajar dalam tatasusunan $students di atas, anda boleh menggunakan kod berikut:

$names = array_column($students, 'name');

Dalam kod di atas, array_column() fungsi mengekstrak nama pelajar daripada tatasusunan $students dan menyimpannya dalam tatasusunan $nama tengah.

  1. Gunakan fungsi array_map untuk mengekstrak tatasusunan indeks

Untuk mengekstrak elemen pada kedudukan yang ditentukan dalam tatasusunan indeks, anda boleh menggunakan fungsi array_map, yang menggunakan fungsi panggil balik yang ditentukan dan mengembalikan tatasusunan baharu. Sebagai contoh, kami mempunyai tatasusunan dua dimensi $numbers yang mengandungi berbilang tatasusunan indeks:

$numbers = array(
    array(1, 3, 5),
    array(2, 4, 6),
    array(3, 5, 7)
);

Jika anda ingin mengekstrak elemen kedua setiap tatasusunan, anda boleh menggunakan kod berikut:

$seconds = array_map(function($arr) {
    return $arr[1];
}, $numbers);

Dalam kod di atas, fungsi tanpa nama pertama kali ditakrifkan, yang menerima parameter tatasusunan dan mengembalikan elemen kedua tatasusunan. Kemudian, melalui fungsi array_map, fungsi tanpa nama digunakan pada setiap elemen tatasusunan $numbers, dan elemen kedua setiap tatasusunan diekstrak dan disimpan dalam tatasusunan baru $saat.

  1. Gunakan fungsi array_walk_recursive untuk mengekstrak tatasusunan bersekutu pelbagai dimensi

Apabila tatasusunan lebih kompleks dan elemennya mempunyai berbilang pasangan nilai kunci dan nama kunci adalah tidak unik, menggunakan fungsi array_map akan Hanya elemen pertama dalam tatasusunan dikembalikan. Pada ketika ini, kita boleh menyelesaikan masalah ini menggunakan fungsi array_walk_recursive, yang menggunakan fungsi panggil balik yang disediakan pengguna untuk setiap elemen dalam tatasusunan berbilang dimensi dan mengekstraknya berdasarkan nama kunci. Contohnya:

$data = array(
    'a' => array(
        'b' => array(
            'c' => 10,
            'd' => 20
         ),
    ),
    'e' => array(
        'f' => 30
    )
);

$callback = function($value, $key) use(&$result){
    if($key == 'd'){
        $result[] = $value;
    }
};

array_walk_recursive($data, $callback);

Dalam kod di atas, array_walk_recursive() fungsi boleh mengendalikan tatasusunan berbilang dimensi berbilang peringkat apabila mengekstrak tatasusunan bersekutu. Fungsi ini menerima dua parameter: tatasusunan $data yang akan dilalui dan fungsi panggil balik $panggilan balik. Fungsi $callback mengekstrak nilai yang sepadan dengan kekunci 'd' dan menyimpannya dalam tatasusunan baru $result.

Ringkasnya, PHP mempunyai pelbagai pilihan fleksibel untuk mengekstrak tatasusunan berbilang dimensi. Kita boleh memilih untuk menggunakan gelung, fungsi array_column(), array_map() function atau array_walk_recursive() fungsi untuk mengekstrak nilai daripada tatasusunan berbilang dimensi mengikut keperluan sebenar.

Atas ialah kandungan terperinci Bolehkah php mengekstrak unsur tatasusunan berbilang dimensi?. 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