Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi dalam php

Bagaimana untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi dalam php

PHPz
PHPzasal
2023-04-20 15:02:44591semak imbas

Apabila menulis program PHP, kita selalunya perlu berurusan dengan tatasusunan. Tatasusunan dalam PHP boleh menjadi satu dimensi atau berbilang dimensi, tetapi dalam beberapa kes, kita perlu menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi. Artikel ini akan menunjukkan kepada anda cara menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi menggunakan PHP.

1. Memahami tatasusunan berbilang dimensi dan tatasusunan satu dimensi

Dalam PHP, tatasusunan berbilang dimensi merujuk kepada tatasusunan yang mengandungi tatasusunan lain tatasusunan berbilang dimensi ialah tatasusunan. Sebagai contoh, berikut ialah tatasusunan dua dimensi:

$fruit = array(
    'apple' => array('type' => 'fruit', 'taste' => 'sweet'),
    'banana' => array('type' => 'fruit', 'taste' => 'sweet'),
    'carrot' => array('type' => 'vegetable', 'taste' => 'bitter')
);

Jika anda ingin menukar tatasusunan dua dimensi ini kepada tatasusunan satu dimensi, anda boleh menggunakan array_merge_recursive() atau gelung foreach untuk mencapai ini.

2. Gunakan fungsi array_merge_recursive()

fungsi array_merge_recursive() boleh digunakan untuk menggabungkan tatasusunan berbilang dimensi. Fungsi ini menggabungkan berbilang tatasusunan ke dalam tatasusunan tunggal, mengekalkan semua nilai untuk kunci yang sama. Sebagai contoh, jika anda mempunyai dua tatasusunan dengan kunci yang sama "epal" dan satu mengandungi maklumat "rasa" dan "warna" dan satu lagi mengandungi maklumat "jenis" dan "atribut", array_merge_recursive() akan mengekalkan Semua nilai, iaitu :

$fruit = array(
    'apple' => array('taste' => 'sweet', 'color' => 'red'),
    'banana' => array('taste' => 'sweet', 'color' => 'yellow')
);

$vegetable = array(
    'apple' => array('type' => 'fruit', 'attribute' => 'delicious'),
    'carrot' => array('type' => 'vegetable', 'attribute' => 'healthy')
);

$merged = array_merge_recursive($fruit, $vegetable);

Hasilnya ialah tatasusunan berbilang dimensi $digabungkan, seperti yang ditunjukkan di bawah:

$array = Array
(
    [apple] => Array
        (
            [taste] => Array
                (
                    [0] => sweet
                    [1] => Array
                        (
                            [0] => fruit
                        )

                )

            [color] => red
            [attribute] => delicious
        )

    [banana] => Array
        (
            [taste] => sweet
            [color] => yellow
        )

    [carrot] => Array
        (
            [type] => vegetable
            [attribute] => healthy
        )

)

Memandangkan tatasusunan digabungkan menggunakan fungsi array_merge_recursive() ialah berbilang dimensi tatasusunan, Jadi anda masih perlu menggunakan gelung foreach untuk menukarnya kepada tatasusunan 1D.

3. Gunakan gelung foreach

Menggunakan gelung foreach untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi adalah lebih fleksibel daripada menggunakan fungsi array_merge_recursive(). Idea asas menggunakan gelung foreach untuk menukar tatasusunan multidimensi kepada tatasusunan satu dimensi adalah untuk menyalin setiap nilai dalam tatasusunan multidimensi kepada tatasusunan satu dimensi yang baharu. Sebagai contoh, untuk tatasusunan $fruit di atas, anda boleh menukarnya kepada tatasusunan satu dimensi menggunakan kod berikut:

$flat = array();

foreach($fruit as $key => $value) {
  if(is_array($value)) {
    $flat = array_merge($flat, array_flatten($value));
  }
  else {
    $flat[$key] = $value;
  }
}

Kod ini menggunakan rekursi dan fungsi array_merge() untuk meratakan berbilang dimensi tatasusunan. Fungsi array_flatten() ditakrifkan seperti berikut:

function array_flatten($array) {
  $result = array();

  foreach($array as $key => $value) {
    if (is_array($value)) {
      $result = array_merge($result, array_flatten($value));
    }
    else {
      $result[$key] = $value;
    }
  }

  return $result;
}

Fungsi ini memanggil dirinya secara rekursif untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi.

4. Ringkasan

Menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi ialah tugas asas dalam pembangunan PHP. Dalam artikel ini, kami membincangkan dua kaedah: menggunakan fungsi array_merge_recursive() dan menggunakan gelung foreach. Tidak kira kaedah yang anda pilih, menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi ialah kemahiran yang berguna.

Atas ialah kandungan terperinci Bagaimana untuk menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi dalam php. 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