J ai pas pu savoir d ou vient l erreur

Résolu/Fermé
smouker Messages postés 10 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 8 mai 2014 - Modifié par pijaku le 24/02/2014 à 09:46
smouker Messages postés 10 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 8 mai 2014 - 25 févr. 2014 à 20:40
Bonjour,
j ai pas pu savoir d ou vient l erreur
Notice: Undefined offset:
dans ce code
$j déjà un variable existant
for($h=1;$h<=$j;++$h){
$d=$tab[$h];
if($d[6]=='0')
{$tab_offre_sans_montant [$u] =  substr($d,1);
$u=$u+1; 
}
else{
$tab_offre_avec_montant [$c] = substr($d,1);
$c=$c+1;
}
}

Merci d avance pour l aide

4 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 24/02/2014 à 07:42
Bonjour,

Avec le message d'erreur complet, et notamment la ligne concernée, ce serait plus simple.

Je dirais, a priori, que le problème vient de $d[6], dans le cas où $d fait moins de 7 caractères de long... Remplace
if($d[6]=='0')
par
if(sizeof($d) >= 7 && $d[6] == '0')
, pour voir.

Xavier
1
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 24/02/2014 à 16:42
Bonjour,

Il te dit
Undefined offset: 1

C'est donc
$tab[1]
qu'il cherche et qui n'existe pas.
Écris
var_dump($tab)
pour voir ce qu'il a dans le ventre.

Xavier
1
smouker Messages postés 10 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 8 mai 2014
24 févr. 2014 à 15:32
Merci mais ça n a pas marché voici le code
$tab_offre_avec_montant = array();
$tab_offre_sans_montant = array();
$u=0;
$c=0;
$d="";
for($h=0;$h<=$j;++$h){
$d =$tab[$h];
if($d[0]=='0')
{$tab_offre_sans_montant [$u] =  substr($d,1);
$u=$u+1; 
}
else{
$tab_offre_avec_montant [$c] = substr($d,1);
$c=$c+1;
}
}

l erreur afficher c est en ligne 7
merci d avance
0
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
24 févr. 2014 à 16:08
Bonjour,

La variable tableau $tab n'existe pas car tu ne l'as pas initialisé avant de t'en servir d'où le message d'erreur PHP.
Cdlt.
0
smouker Messages postés 10 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 8 mai 2014
24 févr. 2014 à 16:18
Le $tab existe deja initialisé ce que j ai posté ce n est qu un extrait de mon projet php le resultat s affiche mais il y a beaucoup de ligne qui indique

Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\pfe\e.php on line 56
le ligne 56 c est le ligne 7
0
smouker Messages postés 10 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 8 mai 2014
24 févr. 2014 à 18:50
Merci mais il écrit Undefined offset: 1 jusqu'a 194 apres dans l affichage il m affiche ce que je veux au dessus mais il y a 194 ligne de Undefined offset
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
25 févr. 2014 à 13:23
Conclusion : ton tableau ne contient de valeurs qu'après 194.

Du coup, plutôt qu'utiliser for(), tu devrais utiliser foreach() :
foreach ($tab as $h => $d){
    if($d[6]=='0'){
        $tab_offre_sans_montant [$u] =  substr($d,1);
        $u=$u+1; 
    }
    else{
        $tab_offre_avec_montant [$c] = substr($d,1);
        $c=$c+1;
    }
}

À limiter éventuellement, si tu veux conserver la contrainte
$h <= $j
(ça dépend de la construction de $tab).

Xavier
0
smouker Messages postés 10 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 8 mai 2014
25 févr. 2014 à 20:40
Merci infiniment ça marche :)
Mais est ce qu il est possible de garder ce script et que h commence par 1 ou lieu case 0
car dans le case 0 il y a une chaîne vide qui sert a rien et encore merci infiniment
0