pembangunan bahagian belakang
tutorial php
Cara mengira kuantiti mengikut kategori produk dalam troli beli-belah PHP dan menggunakannya untuk pengiraan penghantaran
Cara mengira kuantiti mengikut kategori produk dalam troli beli-belah PHP dan menggunakannya untuk pengiraan penghantaran

Artikel ini memperkenalkan cara membaca tatasusunan troli beli-belah daripada Sesi PHP dan mengagregatkan bilangan produk mengikut klasifikasi berangka dalam pangkalan data (seperti kategori=1, 2, 3), yang sesuai untuk senario perniagaan seperti pengiraan kadar tambang dan senario perniagaan lain.
Dalam troli beli-belah ringkas PHP yang dilaksanakan berdasarkan Sesi, $_SESSION["cart_item"] biasanya merupakan tatasusunan bersekutu dengan kod produk (kod) sebagai kunci, dan setiap elemen mengandungi medan seperti nama, kod, kategori, kuantiti, dll. Untuk mencapai "mengira jumlah item mengikut kategori", kuncinya bukan untuk membina semula keseluruhan struktur troli beli-belah ini, tetapi untuk mengumpul struktur troli beli-belah ini secara dinamik, tetapi untuk mengumpul struktur cart secara dinamik ini. idea disahkan oleh pengarang asal "undur dan gunakan kaedah yang mudah".
Berikut ialah pelaksanaan yang jelas, teguh dan boleh diintegrasikan secara langsung:
✅ Langkah 1: Mulakan pembilang klasifikasi (disyorkan untuk menggunakan tatasusunan bersekutu)
//Memulakan tatasusunan kosong untuk memastikan semua kategori sasaran mempunyai nilai lalai 0 $categoryCounts = [1 => 0, 2 => 0, 3 => 0]; // Tambahan berdasarkan ID kategori sebenar, atau dapatkan secara dinamik: array_fill_keys($validCategories, 0) // Jika julat klasifikasi tidak diketahui, ia boleh dimulakan dengan selamat kepada tatasusunan kosong (diisi secara automatik kemudian) $categoryCounts = [];
✅ Langkah 2: Lintas troli beli-belah, tekan kategori untuk mengumpul kuantiti
jika (!kosong($_SESSION["cart_item"])) {
foreach ($_SESSION["cart_item"] sebagai $item) {
$cat = (int)$item["kategori"]; // Paksa penukaran kepada integer untuk mengelakkan ralat logik yang disebabkan oleh kekunci rentetan jika (!isset($categoryCounts[$cat])) {
$categoryCounts[$cat] = 0;
}
$categoryCounts[$cat] = (int)$item["kuantiti"];
}
}
// Contoh output: jumlah bilangan item dalam setiap kategori untuk setiap kategori ($categoryCounts as $catId => $totalQty) {
echo "Kategori {$catId}: {$totalQty} item<br>";
}
✅ Langkah 3: Gabungkan logik pengangkutan (contoh)
$penghantaran = 0;
if (!empty($categoryCounts)) {
if (isset($categoryCounts[1]) && $categoryCounts[1] > 0) {
$penghantaran = 5.00; // Item kategori 1 tertakluk kepada bayaran penghantaran tambahan $5}
if (isset($categoryCounts[2]) && $categoryCounts[2] >= 3) {
$penghantaran = 8.00; // Kategori 2, sehingga 3 helai, $8 penghantaran pukal}
// Peraturan lain...
}
echo "Anggaran penghantaran: $" . number_format($shipping, 2);
⚠️ Nota dan amalan terbaik
- Sentiasa semak jenis data : $item["category"] dan $item["quantity"] mungkin rentetan, dan mesti ditukar secara eksplisit (int) untuk mengelakkan ralat penyambungan tersirat '1' '2' === '12';
- Elakkan daripada bergantung pada senarai kategori tetap : Dalam persekitaran pengeluaran, adalah disyorkan untuk menyemak pangkalan data terlebih dahulu untuk mendapatkan kategori yang sah (seperti SELECT DISTINCT category FROM produk), dan kemudian memulakan $categoryCounts;
- Keselamatan sesi : pastikan session_start() telah dipanggil dan data troli beli-belah pada asasnya telah ditapis sebelum menulis (seperti htmlspecialchars() hanya digunakan untuk output, bukan storan);
- Petua prestasi : Kerumitan masa operasi pengagregatan ini ialah O(n), yang benar-benar bebas tekanan untuk ratusan item. Jika statistik frekuensi tinggi diperlukan pada masa hadapan, pertimbangkan untuk menyimpan hasil ringkasan ke $_SESSION["cart_summary"] untuk mengelakkan pengiraan berulang.
Melalui kaedah yang ringan dan mudah dibaca ini, anda boleh dengan cepat mendapatkan statistik kuantiti yang tepat mengikut dimensi kategori tanpa mengubah logik penambahan dan pemadaman troli beli-belah sedia ada, menyediakan asas data yang boleh dipercayai untuk strategi pengangkutan, amaran inventori atau analisis laporan.
Atas ialah kandungan terperinci Cara mengira kuantiti mengikut kategori produk dalam troli beli-belah PHP dan menggunakannya untuk pengiraan penghantaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Alat AI Hot
Undress AI Tool
Gambar buka pakaian secara percuma
AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik
Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak
Artikel Panas
Alat popular
Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
Dreamweaver CS6
Alat pembangunan web visual
SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
Topik panas
Bagaimana untuk melaksanakan Perakaunan Atribut Eloquent dalam PHP_Laravel penjejakan audit operasi data [Tutorial]
Apr 14, 2026 am 06:45 AM
Menambah log terus ke $casts atau getFooAttribute Eloquent adalah tidak sah kerana pengakses/mutator hanya dicetuskan apabila atribut model dibaca dan ditulis dan tidak boleh menangkap kemas kini kelompok, SQL asli dan perubahan lain yang memintas model. Audit perlu meliputi semua senario pengubahsuaian data.
Cara selamat mengubah suai nama jadual yang dirujuk oleh kunci asing dalam migrasi Laravel
Apr 17, 2026 pm 01:22 PM
Artikel ini memperkenalkan cara untuk mengemas kini nama jadual sasaran dengan selamat bagi kekangan kunci asing sedia ada (seperti menukar daripada penjual kepada penjual) melalui penghijrahan dalam Laravel, meliputi langkah dan langkah berjaga-jaga utama untuk memadamkan kekangan lama dan membina semula kekangan baharu.
Pengalihan URL NGINX dalam tindakan: penjelasan terperinci dan amalan terbaik
Apr 22, 2026 am 06:17 AM
Artikel ini bertujuan untuk menyediakan tutorial profesional tentang cara mengkonfigurasi pengalihan URL menggunakan Nginx. Kami akan menumpukan pada penggunaan arahan tulis semula, terutamanya cara mengubah hala laluan akar ke URL dengan parameter pertanyaan, dan menyelidiki perbezaan antara bendera ubah hala (302 ubah hala sementara) dan tetap (301 ubah hala kekal) serta pertimbangannya dalam SEO dan cache penyemak imbas untuk memastikan konfigurasi Nginx adalah cekap dan selaras dengan amalan terbaik.
Butiran kemasukan dan keluar inventori MySQL dan pertanyaan baki (ditapis mengikut tarikh dan gudang)
Apr 17, 2026 pm 01:34 PM
Artikel ini menerangkan secara terperinci cara menggunakan MySQL CTE dan UNION ALL untuk membina laporan aliran inventori dinamik, meringkaskan pembelian (Pembelian), kuantiti keluar (Pesanan) dan baki masa nyata setiap komoditi mengikut tarikh dan ID gudang yang ditentukan, dan mengeluarkan set hasil berstruktur yang boleh digunakan terus untuk papan pemuka perniagaan.
Bagaimana untuk melaksanakan pemuatan malas imej untuk meningkatkan prestasi halaman yang panjang
Apr 22, 2026 am 04:26 AM
Artikel ini memperkenalkan cara menggunakan atribut loading="lazy" HTML asli untuk memuatkan imej atas permintaan dengan mudah dalam port pandangan, dengan ketara mengurangkan penggunaan sumber halaman awal. Ia amat sesuai untuk menatal halaman yang panjang seperti portfolio dan galeri yang mengandungi sejumlah besar imej. Tiada rangka kerja JavaScript diperlukan dan serasi dengan penyemak imbas arus perdana moden.
Bagaimana untuk menyalin fail .PO ke Cyrillic dengan selamat dan mengelakkan pencemaran aksara NUL
Apr 17, 2026 pm 12:44 PM
Artikel ini menerangkan secara terperinci punca NUL NUL NUL (null byte) aksara bercelaru semasa memproses fail setempat .po dalam PHP dan menyediakan penyelesaian pembaikan berdasarkan operasi aliran fail yang selamat. Ia menekankan untuk mengelakkan membaca dan menulis terus fail yang sama, dan mengesyorkan menggunakan perpustakaan penghuraian PO profesional dan bukannya penggantian rentetan manual.
Memuatkan model berkaitan dengan betul dalam Laravel: Gunakan dengan() untuk pramuat pengguna dan siaran mereka
Apr 28, 2026 am 06:10 AM
Dalam Laravel, jika anda perlu mendapatkan pengguna tertentu berdasarkan ID dan pramuat siaran yang berkaitan pada masa yang sama, anda mesti meletakkan with() sebelum findOrFail(); jika tidak, findOrFail() akan segera melaksanakan pertanyaan dan mengembalikan model tunggal, dan seterusnya dengan() dan pertama() akan gagal atau menghasilkan keputusan yang tidak dijangka.
Bagaimana untuk mengeluarkan rentetan 'null' dengan selamat dan bukannya nilai kosong dalam PHP
Apr 28, 2026 am 06:39 AM
Dalam PHP 8, apabila nilai pembolehubah adalah nol, gema secara langsung akan mengeluarkan kandungan kosong; artikel ini memperkenalkan pelbagai kaedah yang selamat dan ringkas (seperti pengendali penggabungan nol, singkatan ternary, dll.) untuk menjadikan nilai nol dipaparkan secara eksplisit sebagai rentetan "null".





