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

msi79 394 Messages postés lundi 24 août 2009Date d'inscription 26 décembre 2017 Dernière intervention - 26 déc. 2017 à 01:03 - Dernière réponse : msi79 394 Messages postés lundi 24 août 2009Date d'inscription 26 décembre 2017 Dernière intervention
- 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 

5 réponses

Répondre au sujet
jordane45 19427 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 27 décembre 2017 Dernière intervention - 26 déc. 2017 à 01:58
0
Utile
2
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 ?
msi79 394 Messages postés lundi 24 août 2009Date d'inscription 26 décembre 2017 Dernière intervention - 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
msi79 394 Messages postés lundi 24 août 2009Date d'inscription 26 décembre 2017 Dernière intervention - 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
jordane45 19427 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 27 décembre 2017 Dernière intervention - 26 déc. 2017 à 11:33
0
Utile
1
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;

msi79 394 Messages postés lundi 24 août 2009Date d'inscription 26 décembre 2017 Dernière intervention - 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.