Recuperer le premiser élément non nul d'un tableau [Résolu]

Signaler
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020
-
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020
-
Bonjour,
j'aimerais récuperer le premier élément non nul de mon tableau.
Au fait, dans ma table le champ periode contient par exemple 0|0|0|0|5|6|7|8|7|10|11|12
alors le premier element non nul ici est bien 5 . Alors mon objectif est de le recupérer.

voici ce que j'ai tenté mais ça me donne pas un resultat stable (tantot c'est bon tantot c'est pas bon) .
 foreach($resultats_period AS $rows):
	 $periode = $rows['periode'];
	 $periodes = explode("|",$periode);
	 //print_r($periodes[0]);
$maxs = sizeof($periodes);
$max = $maxs-1;
for($i = 0; $i<$max ; $i++):
    if($periodes[$i] ==0):
	  array_shift($periodes);
	endif;
endfor;
print_r($periodes);
$list = $periodes;
$lists = $list[0];


print_r($periodes);
me donne :Array ( [0] => 0 [1] => 5 [2] => 6 [3] => 7 [4] => 8 [5] => 7 [6] => 10 [7] => 11 [8] => 12 ) au lieu de Array ([0] => 5 [2] => 6 [3] => 7 [4] => 8 [5] => 7 [6] => 10 [7] => 11 [8] => 12 )

du coup
echo $lists = $list[0];
donne 0

2 réponses

Messages postés
29744
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2020
338
Relis le manuel de array_shift
http://php.net/manual/fr/function.array-shift.php

A la place utilise https://secure.php.net/manual/en/function.unset.php

Et aussi... Pourquoi ne pas faire un foreach au lieu de ton for ?
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020

là je viens d'essauer avec foreach suis perdu la . sauf si j'ai pas fait comme tu aurais voulu.

je fais
  foreach($resultats_period AS $rows):
	 $periode = $rows['periode'];
	 $periodes = explode("|",$periode);
	 //print_r($periodes[0]);
$maxs = sizeof($periodes);
$max = $maxs;
/*
for($i = 0; $i<$max ; $i++):
    if($periodes[$i] ==0):
	  array_shift($periodes);
      //print_r($periodes);
	endif;
endfor;
*/
   foreach($periodes AS $periode):
     echo $periode[0] ;
   endforeach ;
//print_r($periodes);
$list = $periodes;
pour voir deja si je peux avoir le premier element du tableau $periodes mais ça me donne ca 000056787111 or je pensais afficher 0
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020

je sents que je suis pas loin de la reponse .
j'essaie foreach avec array_shift .

quand je fais :
  foreach($resultats_period AS $rows):
	 $periode = $rows['periode'];
	 $periodes = explode("|",$periode);
	 //print_r($periodes[0]);
$maxs = sizeof($periodes);
$max = $maxs;
$i=0;
foreach($periodes AS $periode):
    if($periodes[$i] ==0):
	  array_shift($periodes);
      print_r($periodes);
	endif;
	$i++;
endforeach ;


il affiche :

Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 12 ) Array ( [0] => 0 [1] => 12 ) Array ( [0] => 12 ) Array ( ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 12 ) Array ( [0] => 0 [1] => 12 ) Array ( [0] => 12 ) Array ( ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 12 ) Array ( [0] => 0 [1] => 0 [2] => 12 ) Array ( [0] => 0 [1] => 12 ) Array ( [0] => 12 ) Array ( ).

je je veux qu'il s'arrête à Array ( [0] => 12 ) or lui il m'emmene à Array ( )
du coup le tableau est vide

comment je fais??
Messages postés
29744
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2020
338
Si ton but est de trouver la première valeur non vide ....
	foreach($resultats_period AS $rows):
		$periode = $rows['periode'];
		$periodes = explode("|",$periode);
		 //print_r($periodes[0]);

		for($i = 0; $i<= count($periodes) ; $i++):
			if($periodes[$i] != 0):
				echo "Première valeur non vide : " . $periodes[$i];
				break; // on sort de la boucle
			endif;
		endfor;
	endfor;

Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020

Merci beaucoup ça marche bien. Que 2018 te soit une année de bonheur , prosperité , santé. tu es trop cool