Comment remplir un tableau avec des objets JSON ?
P粉470645222
P粉470645222 2023-07-20 12:47:05
0
1
454

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粉470645222
P粉470645222

répondre à tous(1)
P粉658954914

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)

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal