Un critère de sélection dans foreach !!

Résolu
Bonjour, je voudrais ajouter un critère de sélection dans un foreach, je voudrais uniquement récupérer les lignes où :

$value == 10 et par ordre d'id décroissant.

Merci à celui qui aura la réponse.

5 réponses

  1. Modérateur
    Bonjour,

    Difficile de te répondre avec si peux d'informations ....

    D'où proviennent tes valeurs ?
    Que contient ton foreach ?
    Où se trouve le $value ?

    et puis...
    je voudrais uniquement récupérer

    Récupérer dans quoi ? comment ? pour en faire quoi ???

    Sachant que
    je voudrais ajouter un critère de sélection

    ... tu veux dire un IF tout simplement non ??
    1. Bonjour,

      Tu peux créer un tableau vide avant ton foreach.
      A l'intérieur du foreach tu met ta condition à l'aide d'un if.
      A l'intérieur tu remplis ton tableau vide des éléments qu'il te faut.
      $tableau_tri = array();
      foreach ($table_elements as $key => $value) {
      	if($value == 10){
      		$tableau_tri[]=$value;
      	}
      }
      

      Ensuite voici les fonctions de tris des tableaux ou tu pourras trouver ton bonheur pour trier par ordre décroissant.
      https://www.php.net/manual/fr/array.sorting.php
      1. Oui tu as raison je suis beaucoup trop vague, une petit code pour mieux me faire comprendre:
        <?php
        
        $array1= array('banane'=>'jaune', 'citron'=>'jaune', 'tomate' => 'rouge');
        
        foreach($array1 as $key=>$value /* je voudrais que le critère soit présent à cette endroit là, du genre $value=== 'jaune' */)
        {
            echo $value;
        
        }
        
        ?>
        


        Je ne veux pas lire les lignes où $value est inégale à 'jaune', mais dans le cas contraire je me contenterais bien d'un simple IF dans la boucle.
        1. Pour filtrer les éléments de ton tableau tu peux aller voir du côté de la fonction array_filter().
          $arr= array('banane'=>'jaune', 'citron'=>'jaune', 'tomate' => 'rouge');
          var_dump(array_filter($arr, function($v, $k) {
              return $v == 'jaune';
          }, ARRAY_FILTER_USE_BOTH));
          
      2. Modérateur
        Bonjour,

        Tu peux utiliser un array_filter : https://www.php.net/manual/fr/function.array-filter.php
        <?php
        
        
        $array1= array('banane'=>'jaune', 'citron'=>'jaune', 'tomate' => 'rouge');
        
        function yellow($var)
        {
            // retourne lorsque l'entrée est impaire
            return($var == 'jaune');
        }
        
        $array_filtre = array_filter($array1, "yellow");
        
        foreach($array_filtre as $key=>$value 
        {
            echo "<br>$key : $value";
        
        }
        
        ?>