我有一个文件,名为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; }
在线尝试 (已更新文本,使其比使用编码字符更容易理解)