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

Bagaimana untuk memaksa penukaran kepada tatasusunan diindeks dalam php

PHPz
Lepaskan: 2023-04-26 14:50:31
asal
584 orang telah melayarinya

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),
);
Salin selepas log masuk

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);
Salin selepas log masuk

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),
)
Salin selepas log masuk
Salin selepas log masuk

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;
}
Salin selepas log masuk

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);
Salin selepas log masuk

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),
)
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan