我有一个文件parts.json,它是一个JSON文件,包含一个对象数组,表示一些车辆的备件。
下面是它的一个片段:
[
{
"name": "\u0625\u0643\u0635\u062f\u0627\u0645 \u0623\u0633\u0648\u062f \u062e\u0641\u064a\u0641",
"category": "\u0625\u0643\u0635\u062f\u0627\u0645\u0627\u062a",
"quantity": "2",
"price": "55",
"id": 1756378,
"shelf": "30",
"slot": "173"
},
{
"name": "\u0625\u0643\u0635\u062f\u0627\u0645 \u0623\u0633\u0648\u062f \u0645\u062d\u0645\u0644",
"category": "\u0625\u0643\u0635\u062f\u0627\u0645\u0627\u062a",
"quantity": "2",
"price": "90",
"id": 1181335,
"shelf": "",
"slot": ""
}
字符串
在我的index.php中,我有一个输入类型为text
的表单,还有一个输入类型为submit
。我想添加搜索功能,以便在点击submit
时,所有备件都应填写在一个表中。
为此,我创建了两个函数,如下所示:
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'];
型
我获得了名称以输入的前缀开头的备件的第一个示例。
1条答案
按热度按时间9lowa7mx1#
getPartByName
中的return
只能返回一个元素。如果你想要多个结果,那么你应该返回一个数组。
1.我们在方法中定义一个数组
1.我们为对应于过滤器的每个元素添加一个元素到数组中
1.我们返回数组
字符串
Try it online(文本已更新,因此比编码字符更容易理解)
我们也可以在不使用循环的情况下编写以下代码:
型
array_filter
将对每个项目应用匿名函数,它将删除与条件不匹配的值。Try it online的