Rumah > Soal Jawab > teks badan
Saya mempunyai fail bernama parts.json iaitu fail JSON yang mengandungi susunan beberapa objek alat ganti kenderaan.
Berikut ialah contoh sebahagian daripadanya:
[ { "name": "u0625u0643u0635u062fu0627u0645 u0623u0633u0648u062f u062eu0641u064au0641", "category": "u0625u0643u0635u062fu0627u0645u0627u062a", "quantity": "2", "price": "55", "id": 1756378, "shelf": "30", "slot": "173" }, { "name": "u0625u0643u0635u062fu0627u0645 u0623u0633u0648u062f u0645u062du0645u0644", "category": "u0625u0643u0635u062fu0627u0645u0627u062a", "quantity": "2", "price": "90", "id": 1181335, "shelf": "", "slot": "" }
Dalam fail index.php saya, saya mempunyai borang yang mengandungi kotak input teks dan butang hantar. Saya ingin menambah fungsi carian supaya setiap kali butang hantar diklik, borang diisi dengan semua maklumat alat ganti.
Untuk ini, saya mencipta dua fungsi seperti berikut:
function getParts() { return json_decode(file_get_contents(__DIR__ . '/parts.json'), true); } function getPartByName($name) { $parts = getParts(); foreach ($parts as $part) { if (str_starts_with($part['name'], $name)) { return $part; } } return ''; }
Masalahnya ialah apabila saya menggunakan kod ini:
$searchedPart = $_POST['searched-part']; $partToBeSearched = trim($searchedPart); echo getPartByName($partToBeSearched)['name'];
Apa yang saya dapat ialah padanan pertama nama alat ganti bermula dengan awalan yang dimasukkan.
P粉6589549142023-07-21 09:31:18
Nilai pulangan dalam fungsi getPartByName hanya boleh mengembalikan satu elemen.
Jika anda mahukan berbilang hasil maka anda harus mengembalikan tatasusunan.
function getPartByName($name) { $matches = []; $parts = getParts(); foreach ($parts as $part) { if (str_starts_with($part['name'], $name)) { $matches[] = $part; } } return $matches; }
Cuba dalam talian (Teks dikemas kini untuk memudahkan pemahaman daripada menggunakan aksara yang dikodkan)