我有一个文件,名为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'];
我得到的是以输入的前缀开头的备件名称的第一个匹配项。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
getPartByName函数中的返回值只能返回一个元素。
如果您想要多个结果,那么您应该返回一个数组。
function getPartByName($name) { $matches = []; $parts = getParts(); foreach ($parts as $part) { if (str_starts_with($part['name'], $name)) { $matches[] = $part; } } return $matches; }在线尝试 (已更新文本,使其比使用编码字符更容易理解)