如何用JSON物件填入一個陣列?
P粉470645222
P粉470645222 2023-07-20 12:47:05
0
1
483

我有一個文件,名為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粉470645222
P粉470645222

全部回覆(1)
P粉658954914

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板