suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie fülle ich ein Array mit JSON-Objekten?

Ich habe eine Datei namens parts.json, eine JSON-Datei, die ein Array einiger Fahrzeugersatzteilobjekte enthält.

Hier ist ein Beispiel für einige davon:


[
    {
        "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": ""
    }

In meiner index.php-Datei habe ich ein Formular, das ein Texteingabefeld und eine Schaltfläche zum Senden enthält. Ich möchte eine Suchfunktion hinzufügen, sodass jedes Mal, wenn auf die Schaltfläche „Senden“ geklickt wird, ein Formular mit allen Ersatzteilinformationen ausgefüllt wird.

Dazu habe ich zwei Funktionen wie folgt erstellt:


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 '';
}

Das Problem ist, wenn ich diesen Code verwende:

$searchedPart = $_POST['searched-part'];
  $partToBeSearched = trim($searchedPart); 
  echo getPartByName($partToBeSearched)['name'];

Was ich erhalte, ist die erste Übereinstimmung des Ersatzteilnamens, beginnend mit dem eingegebenen Präfix.

P粉470645222P粉470645222511 Tage vor456

Antworte allen(1)Ich werde antworten

  • P粉658954914

    P粉6589549142023-07-21 09:31:18

    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;
    }
    

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

    Antwort
    0
  • StornierenAntwort