Bonjour .... Je suis confronté à un problème qui offset non défini: 1 en ligne 3. Je ne peux pas comprendre ce que le type d'erreur est .. .. Quelqu'un peut-il me dire pourquoi cette erreur se produit dans php
Décalage non défini en ligne: 3
foreach ($lines as $line)
{
list($var,$value) = explode('=', $line); //line 3
$data[$var] = $value;
}
Vous obtenez PHP notice
parce que vous essayez d'accéder à un index de tableau non défini.
list($var,$value) = explode('=', $line);
La ligne ci-dessus éclate la chaîne $line
avec =
et affecte les valeurs 0th
en $var
et la valeur 1st
en $value
. Le problème se pose lorsque $line
contient une chaîne sans =
.
Je sais que cette question est ancienne et que la réponse fournie est suffisante: "Vous recevez une notification PHP parce que vous essayez d'accéder à un index de tableau qui n'est pas défini". mais je crois que le meilleur moyen de surmonter le problème des index non définis lorsqu'il existe des cas où vous pouvez avoir un tableau vide en utilisant le combo list ()/explode () est de définir les valeurs par défaut à l'aide du tableau de bord.
La raison en est que lorsque vous utilisez list (), vous connaissez le nombre de variables que vous souhaitez extraire du tableau.
Par exemple:
$delim = '=';
$aArray = array()
$intNumberOfListItems = 2;
list($value1, $value2) = array_pad(explode($delim, $aArray, $intNumberOfListItems ), $intNumberOfListItems , null);
Essentiellement, vous transmettez un troisième paramètre à exploser en indiquant le nombre de valeurs nécessaires pour vos variables list () (dans l'exemple ci-dessus deux). Ensuite, vous utilisez array_pad pour donner une valeur par défaut (dans l'exemple ci-dessus, null) lorsque le tableau ne contient pas de valeur pour la variable de liste.
Cela est dû au fait que votre $line
ne contient "=
" nulle part dans la chaîne. Il ne contient donc qu'un seul élément dans array.list () est utilisé pour affecter une liste de variables en une seule opération. Votre liste contient 2 éléments mais à partir des données retournées par implode, il n’ya qu’une donnée. Donc, il lance un avis .. Un moyen de résoudre ce problème consiste à utiliser array_pad () method.
list($var,$value) = array_pad(explode('=', $line),2,null);
en faisant list ($ var, $ value) php attendra un tableau de 2 éléments, si la fonction éclatée ne trouve pas un symbole égal, elle retournera seulement un tableau avec 1 élément provoquant l'erreur de décalage indéfini, offset 1 étant le second élément d'un tableau donc probablement l'une de vos variables de ligne $ n'a pas un signe égal
Ceci est dû au tableau. L'index du tableau ne s'affiche pas en raison de cette erreur d'offset indéfinie.
Alors s'il vous plaît vérifier le tableau avec la fonction print_r.
La construction de langage list
est utilisée pour créer des variables individuelles à partir d'un tableau. Si votre tableau ne contient pas suffisamment d'éléments pour le nombre de variables que vous attendez dans l'appel list
, vous obtiendrez une erreur. Dans votre cas, vous avez 2 variables, vous avez donc besoin d’un tableau avec 2 éléments - les index 0 et 1.
Solution:
$lines = array('one' => 'fruit=Apple', 'two' => 'color=red', 'three' => 'language');
foreach ($lines as $line)
{
list($var,$value) = (strstr($line, '=') ? explode('=', $line) : array($line, ''));
$data[$var] = $value;
}
print_r($data);
Essaye celui-là..
Pour référence http://in1.php.net/manual/en/function.list.phphttp://in1.php.net/manual/en/function.explode .php