[RESOLU] Comparer une valeur de chaque tableau (débutant)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Comparer une valeur de chaque tableau (débutant)

Re: Comparer une valeur de chaque tableau (débutant)

par Ncls7522 » 24 janv. 2022, 11:12

Bonjour j'ai trouvé la solution avec ce code :
foreach($users as $keyuser){
foreach($recipes as $keyrecipe){

    if ($keyrecipe['author'] == $keyuser['author']){
            echo $keyuser['message'];
            echo $keyrecipe['author'];}
              
}

    }
et en testant le code que tu as mis j'obtiens le même résultat. Sauf que je n'ai pas utilisé de fonction.

Merci beaucoup d'avoir pris du temps pour ça !

Re: Comparer une valeur de chaque tableau (débutant)

par j_saisrien » 24 janv. 2022, 02:18

Hello Ncls7522
Tu peux toujours essayer cette fonction:

Code : Tout sélectionner

function test( $x , $y) { for ($i = 0; $i < count($x) ; $i++) { $m = $x[$i]; for ($r = 0; $r < count($y) ; $r++) { $n = $y[$r]; if($m['author'] == $n['author'] ) { echo $m['author'] . " => " . $n['message'] . "<br />"; } } } } echo test($recipes , $users);
a+

Re: Comparer une valeur de chaque tableau (débutant)

par Ncls7522 » 22 janv. 2022, 21:41

Bonsoir,

je n'ai aucunes erreurs qui s'affichent, j'ai déjà essayé avec des foreach et for mais ça ne fonctionne pas non plus. Je n'arrive pas à trouver la bonne méthode pour parvenir au résultat voulu. J'ai débuté il y a moins d'une semaine et ce n'est pas encore très clair.

Je vais rester sur la piste des 2 boucles for ou foreach, merci pour l'éclaircissement :)

Re: Comparer une valeur de chaque tableau (débutant)

par or 1 » 22 janv. 2022, 15:08

il faut afficher les erreurs, afin d'avoir
Warning : Undefined array key "author" in ... on line 57
soit à la ligne echo test($recipes['author'] , $users);

il faut 2 boucles for ou 2 foreach, pas une seule.

Comparer une valeur de chaque tableau (débutant)

par Ncls7522 » 22 janv. 2022, 11:15

Bonjour,

Je débute en PHP et j'apprends actuellement en autodidacte.

Je suis encore à l'étape des bases (tableaux, fonctions, boucles etc). Au fur et à mesure que j'avance j'aime bien faire de petits exercices par rapport à ce que je viens d'apprendre.

Seulement ici, ce que j'essaie de faire ne fonctionne pas, je cale dessus depuis un moment et rien y fait.. Je vous explique :

j'ai d'abord créé 2 tableaux et une simple fonction, dont le but est de comparer une des valeurs de chaque tableau ('author'). Et si ces valeurs sont identiques, il faut que la fonction renvoie le nombre de messages ce situant dans le tableau "$users".

Voici le code :
<?php
$recipes = [
    [
        'title' => 'Cassoulet',
        'recipe' => '',
        'author' => 'pierre',
        'is_enabled' => true,
    ],
    [
        'title' => 'Couscous',
        'recipe' => '',
        'author' => 'mickael',
        'is_enabled' => false,
    ],
    [
        'title' => 'Escalope milanaise',
        'recipe' => '',
        'author' => 'mathieu',
        'is_enabled' => true,
    ],
    [
        'title' => 'Salade Romaine',
        'recipe' => '',
        'author' => 'laurene',
        'is_enabled' => false,
    ],
];
$users = [
    [
        'author' => 'pierre',
        'message' => 1000,
    ],
    [
        'author' => 'laurene',
        'message' => 2050,
    ],
    [
        'author' => 'mickael',
        'message' => 4000,
    ],
    [
        'author' => 'louis',
        'message' => 777,
    ],
];


function test(  $x ,  $y) 
 {
for ($i = 0 ; $i < count($y) ; $i++) {
    $variable = $y[$i];
    if ($x === $variable['author']) {
        echo $variable['message'];
     }
   }
}
?>
<?php echo test($recipes['author'] , $users); ?>
Ici, je suis bien conscient que mes tableaux ont eux-mêmes des tableaux, donc pourquoi pas un tenter un "eachfor".. Malheureusement après de multiples essaies rien y fait, que n'arrive pas à avoir le résultat souhaité :(

Si des personnes pourraient m'éclairer, je les remercies énormément ! Je débute, c'est surement un truc tout bête mais bon.