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

Messages postés
455
Date d'inscription
lundi 24 août 2009
Dernière intervention
9 octobre 2018
- 26 déc. 2017 à 01:03 - Dernière réponse :
Messages postés
455
Date d'inscription
lundi 24 août 2009
Dernière intervention
9 octobre 2018
- 26 déc. 2017 à 11:59
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
Afficher la suite 

Votre réponse

5 réponses

Messages postés
23284
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2018
- 26 déc. 2017 à 01:58
0
Merci
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
455
Date d'inscription
lundi 24 août 2009
Dernière intervention
9 octobre 2018
- 26 déc. 2017 à 09:56
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
455
Date d'inscription
lundi 24 août 2009
Dernière intervention
9 octobre 2018
- 26 déc. 2017 à 10:28
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??
Commenter la réponse de jordane45
Messages postés
23284
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2018
- 26 déc. 2017 à 11:33
0
Merci
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
455
Date d'inscription
lundi 24 août 2009
Dernière intervention
9 octobre 2018
- 26 déc. 2017 à 11:59
Merci beaucoup ça marche bien. Que 2018 te soit une année de bonheur , prosperité , santé. tu es trop cool
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.