recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment remplir un tableau avec des objets JSON ?

J'ai un fichier appelé parts.json qui est un fichier JSON contenant un tableau de certains objets de pièces de rechange de véhicules.

Voici un exemple de certains d'entre eux :


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

Dans mon fichier index.php, j'ai un formulaire qui contient une zone de saisie de texte et un bouton de soumission. Je souhaite ajouter une fonctionnalité de recherche afin que chaque fois que vous cliquez sur le bouton Soumettre, un formulaire soit rempli avec toutes les informations sur les pièces de rechange.

Pour cela, j'ai créé deux fonctions comme suit :


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

Le problème c'est quand j'utilise ce code :

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

Ce que j'obtiens est la première correspondance du nom de la pièce de rechange commençant par le préfixe saisi.

P粉470645222P粉470645222503 Il y a quelques jours443

répondre à tous(1)je répondrai

  • P粉658954914

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

    La valeur de retour dans la fonction getPartByName ne peut renvoyer qu'un seul élément.

    Si vous souhaitez plusieurs résultats, vous devez renvoyer un tableau.

    1. Nous définissons un tableau dans la méthode.
    2. Nous ajoutons un élément au tableau pour chaque élément correspondant au filtre.
    3. Nous renvoyons ce tableau.
    function getPartByName($name)
    {
        $matches = [];
    
        $parts = getParts();
        foreach ($parts as $part) {
            if (str_starts_with($part['name'], $name)) {
                $matches[] = $part;
            }
        }
    
        return $matches;
    }
    

    Essayez-le en ligne (Texte mis à jour pour le rendre plus facile à comprendre que l'utilisation de caractères codés)

    répondre
    0
  • Annulerrépondre