我有一個文件,名為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粉6589549142023-07-21 09:31:18
getPartByName函數中的傳回值只能傳回一個元素。
如果您想要多個結果,那麼您應該傳回一個陣列。
function getPartByName($name) { $matches = []; $parts = getParts(); foreach ($parts as $part) { if (str_starts_with($part['name'], $name)) { $matches[] = $part; } } return $matches; }
線上嘗試 (已更新文本,使其比使用編碼字元更容易理解)