如何用JSON对象填充一个数组?
P粉470645222
P粉470645222 2023-07-20 12:47:05
0
1
436

我有一个文件,名为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;
}

在线尝试 (已更新文本,使其比使用编码字符更容易理解)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板