Bagaimana untuk mengisi tatasusunan dengan objek JSON?
P粉470645222
P粉470645222 2023-07-20 12:47:05
0
1
421

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粉470645222
P粉470645222

membalas semua(1)
P粉658954914

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)

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan