Artikel ini menangani isu biasa apabila bekerja dengan tatasusunan sesi PHP: cara mengalih keluar pembolehubah tertentu sambil mengekalkan yang lain.
Masalah:
Kod PHP menggunakan percubaan logik berikut untuk menambah dan mengalih keluar pembolehubah daripada sesi:
if(isset($_GET['name'])) { $name = isset($_SESSION['name']) ? $_SESSION['name'] : array(); $name[] = $_GET['name']; $_SESSION['name'] = $name; } if (isset($_POST['remove'])) { unset($_SESSION['name']); }
Apabila pengguna memilih " Alih keluar," kod cuba memadam pembolehubah yang ditunjukkan dalam $list2 daripada sesi, tetapi sebaliknya memadamkan semua pembolehubah dalam tatasusunan.
Penyelesaian:
Untuk mengalih keluar sahaja pembolehubah tertentu, ubah suai logik alih keluar seperti berikut:
if (isset($_POST['remove'])) { $key = array_search($_GET['name'], $_SESSION['name']); if ($key !== false) { unset($_SESSION['name'][$key]); $_SESSION["name"] = array_values($_SESSION["name"]); } }
Kod ini menggunakan array_search() untuk mencari kunci tatasusunan yang sepadan dengan pembolehubah yang akan dialih keluar. Ia kemudiannya menyahset pembolehubah dan mengindeks semula tatasusunan menggunakan array_values().
Penjelasan:
Apabila anda menyahset $_SESSION['name'], anda memadam keseluruhan pembolehubah sesi, yang mengandungi semua pembolehubah tambahan. Untuk mengalih keluar pembolehubah tertentu sahaja, anda perlu mencari indeksnya dalam tatasusunan menggunakan array_search(). Jika indeks ini wujud (iaitu, $key is not false), anda boleh meneruskan untuk menyahset elemen yang sesuai.
Barisan berikutnya menstruktur semula indeks tatasusunan, memastikan bahawa kunci tatasusunan kekal berurutan dan mengelakkan masalah yang mungkin berlaku dengan lebih lanjut penambahan atau pengubahsuaian.
Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Pembolehubah Khusus daripada Tatasusunan Sesi PHP Tanpa Memadam Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!