cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mengisi tatasusunan dengan objek JSON?

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粉470645222P粉470645222503 hari yang lalu442

membalas semua(1)saya akan balas

  • P粉658954914

    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.

    1. Kami mentakrifkan tatasusunan dalam kaedah.
    2. Kami menambah elemen pada tatasusunan untuk setiap elemen yang sepadan dengan penapis.
    3. Kami mengembalikan tatasusunan ini.
    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)

    balas
    0
  • Batalbalas