web-dev-qa-db-fra.com

Offset non défini 1

Offset non défini: 1

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;
    }
12
tushAR

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 =.

15
Nauphal

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. 

5
mrjamesmyers

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);
1
Stan Fad

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

1

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.

1
Prakash

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.

http://php.net/manual/en/function.list.php

1
leftclickben

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

1
Mahesh