搜尋

首頁  >  問答  >  主體

如何用JSON物件填入一個陣列?

我有一個文件,名為parts.json,它是一個包含一些車輛備件物件陣列的JSON文件。

這是其中一部分的範例:


#
[
    {
        "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": ""
    }

在我的index.php檔案中,我有一個包含文字輸入框和一個提交按鈕的表單。我想新增搜尋功能,這樣每當點擊提交按鈕時,就會被填入上所有的備用零件資訊。

為此,我建立了兩個函數,如下所示:


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 '';
}

問題是當我使用這段程式碼時:

$searchedPart = $_POST['searched-part'];
  $partToBeSearched = trim($searchedPart); 
  echo getPartByName($partToBeSearched)['name'];

我得到的是以輸入的前綴開頭的備件名稱的第一個符合項目。

P粉470645222P粉470645222503 天前445

全部回覆(1)我來回復

  • P粉658954914

    P粉6589549142023-07-21 09:31:18

    getPartByName函數中的傳回值只能傳回一個元素。

    如果您想要多個結果,那麼您應該傳回一個陣列。

    1. 我們在方法中定義一個陣列。
    2. 我們為與篩選器相對應的每個元素向陣列新增一個元素。
    3. 我們回傳這個陣列。
    function getPartByName($name)
    {
        $matches = [];
    
        $parts = getParts();
        foreach ($parts as $part) {
            if (str_starts_with($part['name'], $name)) {
                $matches[] = $part;
            }
        }
    
        return $matches;
    }
    

    線上嘗試 (已更新文本,使其比使用編碼字元更容易理解)

    回覆
    0
  • 取消回覆