Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk memaksa penukaran kepada tatasusunan diindeks dalam php

Bagaimana untuk memaksa penukaran kepada tatasusunan diindeks dalam php

PHPz
PHPzasal
2023-04-26 14:20:19552semak imbas

Merundingkan tatasusunan ialah operasi yang sangat biasa dalam PHP. Apabila kami mendapat data daripada pangkalan data atau sumber data lain, kami biasanya mendapat tatasusunan atau objek bersekutu. Walau bagaimanapun, dalam beberapa kes, kita perlu menukarnya kepada tatasusunan diindeks untuk manipulasi mudah atau menghantar ke fungsi lain. Artikel ini menerangkan cara menghantar tatasusunan bersekutu PHP kepada tatasusunan diindeks.

Pertama, mari kita lihat contoh. Katakan kita mendapat beberapa data pengguna daripada pangkalan data, seperti berikut:

$users = array(
  array('id' => 1, 'name' => 'John', 'age' => 22),
  array('id' => 2, 'name' => 'Jane', 'age' => 30),
  array('id' => 3, 'name' => 'Bob', 'age' => 25),
);

Ini ialah tatasusunan bersekutu dua dimensi yang mengandungi tiga data pengguna. Jika kita ingin menukar ini kepada tatasusunan terindeks satu dimensi yang mudah, kita boleh menggunakan fungsi array_values().

$users = array_values($users);

Ini akan mengembalikan hasil berikut:

array(
  array('id' => 1, 'name' => 'John', 'age' => 22),
  array('id' => 2, 'name' => 'Jane', 'age' => 30),
  array('id' => 3, 'name' => 'Bob', 'age' => 25),
)

Ini tidak mempunyai kesan yang kita inginkan kerana tatasusunan 2D yang sama sebenarnya dikembalikan. Ini kerana fungsi array_values() hanya boleh menukar tatasusunan satu dimensi dan tidak boleh mengendalikan tatasusunan berbilang dimensi secara rekursif. Oleh itu, kita perlu menggunakan fungsi rekursif untuk mencapai ini.

Berikut ialah fungsi rekursif yang menukar tatasusunan bersekutu kedalaman arbitrari kepada tatasusunan diindeks:

function array_to_index($arr) {
  if (!is_array($arr)) {
    return $arr;
  }
  $new_arr = array();
  foreach ($arr as $key => $value) {
    $new_arr[] = array_to_index($value);
  }
  return $new_arr;
}

Fungsi ini menerima tatasusunan kedalaman arbitrari sebagai parameter dan mengembalikan tatasusunan yang diindeks .

Kita boleh menukar tatasusunan $users di atas menjadi tatasusunan diindeks satu dimensi menggunakan fungsi ini:

$users = array_to_index($users);

Ini akan mengembalikan hasil berikut:

array(
  array('id' => 1, 'name' => 'John', 'age' => 22),
  array('id' => 2, 'name' => 'Jane', 'age' => 30),
  array('id' => 3, 'name' => 'Bob', 'age' => 25),
)

Ini mungkin kelihatan tidak berbeza daripada hasil sebelumnya, tetapi ia sebenarnya tatasusunan satu dimensi, kerana setiap elemen ialah tatasusunan.

Untuk mengakses data pengguna tunggal, kami boleh menggunakan subskrip:

$user1 = $users[0];
$user2 = $users[1];
$user3 = $users[2];

echo $user1['name']; // 输出 John
echo $user2['age']; // 输出 30
echo $user3['id']; // 输出 3

Ini ialah cara untuk menghantar tatasusunan bersekutu ke tatasusunan diindeks. Ia boleh digunakan secara rekursif pada tatasusunan dengan sebarang kedalaman tanpa mengubah kunci dalam tatasusunan.

Sudah tentu, ini hanyalah contoh mudah. Dalam pembangunan sebenar, kita mungkin perlu menukar jenis tatasusunan bersekutu lain (seperti objek) kepada tatasusunan diindeks, atau perlu memproses tatasusunan selanjutnya untuk memenuhi keperluan khusus. Walau bagaimanapun, fungsi rekursif ini menyediakan pelan tindakan yang mudah yang boleh membantu kami memahami dan memanipulasi tatasusunan PHP dengan lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk memaksa penukaran kepada tatasusunan diindeks 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