Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar nilai dalam tatasusunan dua dimensi dalam php

Bagaimana untuk menukar nilai dalam tatasusunan dua dimensi dalam php

PHPz
PHPzasal
2023-04-17 15:25:571042semak imbas

Dalam PHP, tatasusunan dua dimensi ialah jenis data biasa. Ia terdiri daripada berbilang tatasusunan, setiap satunya boleh mengandungi berbilang kunci dan nilai. Apabila kita perlu menukar nilai elemen dalam tatasusunan dua dimensi, kita boleh menggunakan beberapa fungsi dan sintaks yang disediakan oleh PHP untuk mencapai ini. Dalam artikel ini, kita akan membincangkan cara menukar nilai dalam tatasusunan dua dimensi.

1. Gunakan gelung foreach

Dalam PHP, adalah sangat biasa untuk menggunakan gelung foreach untuk melintasi tatasusunan dua dimensi. Jika kita perlu menukar nilai elemen, kita boleh menggunakan rujukan lulus dalam gelung foreach. Melepasi melalui rujukan bermakna menghantar alamat pembolehubah, bukan nilai pembolehubah. Dengan cara ini, selepas mengubah suai nilai pembolehubah dalam gelung, tatasusunan asal juga akan ditukar.

Sebagai contoh, kami mempunyai tatasusunan dua dimensi berikut:

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

Kami perlu menukar umur Tom daripada 18 kepada 19, anda boleh menggunakan kod berikut:

foreach ($students as &$student) {
  if ($student['name'] == 'Tom') {
    $student['age'] = 19;
  }
}

Dalam kod di atas, kami menggunakan pemindahan rujukan & dan mengubah suainya dengan menilai nilai kekunci name dalam gelung.

2. Gunakan fungsi array_map

Selain menggunakan gelung foreach, kita juga boleh menggunakan fungsi array_map yang disediakan oleh PHP untuk menukar nilai dalam tatasusunan dua dimensi. Fungsi array_map boleh menerima fungsi sebagai hujah dan menggunakan fungsi pada setiap elemen tatasusunan. Fungsi ini boleh mengembalikan elemen yang diubah suai, dengan itu menukar nilai dalam tatasusunan asal.

Sebagai contoh, kita mempunyai tatasusunan dua dimensi berikut:

$prices = array(
  array('product' => 'pen', 'price' => 1.5),
  array('product' => 'pencil', 'price' => 0.5),
  array('product' => 'book', 'price' => 8)
);

Kita perlu mendarabkan harga dengan 2, kita boleh menggunakan kod berikut:

function double_price($item) {
  $item['price'] *= 2;
  return $item;
}

$prices = array_map("double_price", $prices);

Dalam kod di atas, kami mentakrifkan fungsi double_price yang mendarabkan harga elemen input dengan 2 dan mengembalikan elemen yang diubah suai. Kami kemudian memanggil fungsi ini menggunakan fungsi array_map dan menyimpan hasilnya kembali ke dalam tatasusunan asal.

3. Gunakan fungsi array_walk_recursive

Untuk tatasusunan berbilang dimensi atau tatasusunan dua dimensi yang mengandungi sub-tatasusunan, kita boleh menggunakan fungsi array_walk_recursive yang disediakan oleh PHP untuk menukar nilai. Sama seperti array_map, array_walk_recursive juga menerima fungsi sebagai hujah dan menggunakan fungsi itu pada setiap elemen tatasusunan. Perbezaannya ialah fungsi ini digunakan secara rekursif pada setiap elemen tatasusunan, termasuk elemen dalam subarray.

Sebagai contoh, kami mempunyai tatasusunan berbilang dimensi berikut:

$marks = array(
  'Tom' => array('Chinese' => 80, 'Math' => 90),
  'Jerry' => array('Chinese' => 85, 'Math' => 95)
);

Kami perlu menukar markah matematik Jerry daripada 95 kepada 100, anda boleh menggunakan kod berikut:

function update_jerry(&$value, $key) {
  if ($key == 'Jerry' && is_array($value) && isset($value['Math'])) {
    $value['Math'] = 100;
  }
}

array_walk_recursive($marks, 'update_jerry');

Dalam kod di atas, kami mentakrifkan fungsi update_jerry yang mengubah suai nilai yang layak dalam elemen input kepada 100. Kami kemudian memanggil fungsi ini menggunakan fungsi array_walk_recursive untuk menyimpan hasil kembali ke dalam tatasusunan asal.

Kesimpulan

Dalam PHP, terdapat banyak cara untuk menukar nilai dalam tatasusunan dua dimensi. Kita boleh menggunakan gelung foreach, fungsi array_map atau fungsi array_walk_recursive untuk mencapai ini. Kaedah yang berbeza sesuai untuk situasi yang berbeza, dan kita boleh memilih kaedah yang paling sesuai mengikut keperluan tertentu. Tidak kira kaedah yang kita gunakan, kita harus memberi perhatian kepada mengikuti amalan terbaik untuk memastikan kebolehbacaan dan kebolehselenggaraan kod.

Atas ialah kandungan terperinci Bagaimana untuk menukar nilai dalam tatasusunan dua 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