2016-09-17 2 views
-2

Ich habe Undefined 1 und 2 in den Zeilen 32 und 33. Ich habe nicht einmal eine Vorstellung davon, was passiert und was der Fehler bedeutet. Wie kann ich das bitte reparieren?Undefinierter Offset 1 und 2

$splittedGSM = str_split($gsm); 
    $correctGSM = TRUE; 

    if(count($splittedGSM) != 11) $correctGSM = FALSE; 
    if($splittedGSM[0] != 0) $correctGSM = FALSE; 
    if($splittedGSM[1] != 7 && $splittedGSM[1] != 8 && $splittedGSM[1] != 9) $correctGSM = FALSE; //Line 32 
    if($splittedGSM[2] != 0 && $splittedGSM[2] != 1) $correctGSM = FALSE; //Line 33 
    foreach ($splittedGSM as $realgsm) { 
     if(!is_numeric($realgsm)){ 
      return FALSE; 
     } 
    } 
+1

, die eine Leitung 32 und 33 in diesem Code? – Bhavin

+0

Es ist dort im Code wenn ($ splittedGSM [1]! = 7 && $ splittedGSM [1]! = 8 && $ splittedGSM [1]! = 9) $ correctGSM = FALSCH; // Zeile 32 if ($ splittedGSM [2]! = 0 && $ splittedGSM [2]! = 1) $ correctGSM = FALSCH; // Zeile 33 –

+0

muss versuchen mit if (! Isset ($ splittedGSM [1])) {$ splittedGSM [1] = null} Bedingung? – Bhavin

Antwort

0

Versuchen Sie unten Code. Offset ist nicht definiert, da es nicht gesetzt ist, müssen Sie überprüfen, ob der Offset Null ist, wenn er nicht gesetzt ist. Sie müssen dafür die isset() -Funktion verwenden.

$splittedGSM = str_split($gsm); 
    $correctGSM = TRUE; 

    // check using isset function 
    if(!isset($splittedGSM[1])) 
    { 
      $splittedGSM[1] = null; 
    } 
    if(!isset($splittedGSM[2])) 
    { 
      $splittedGSM[2] = null; 
    } 
    if(count($splittedGSM) != 11) $correctGSM = FALSE; 
    if($splittedGSM[0] != 0) $correctGSM = FALSE; 
    if($splittedGSM[1] != 7 && $splittedGSM[1] != 8 && $splittedGSM[1] != 9) $correctGSM = FALSE; //Line 32 
    if($splittedGSM[2] != 0 && $splittedGSM[2] != 1) $correctGSM = FALSE; //Line 33 
    foreach ($splittedGSM as $realgsm) { 
     if(!is_numeric($realgsm)){ 
      return FALSE; 
     } 
    } 
0

Das Problem ist, dass Sie versuchen, Elemente für den Zugriff auf 1 und 2 der $splittedGSM ohne sich vorher vergewissert, dass sie existieren. Wahrscheinlich rufen Sie str_split mit einer leeren Zeichenfolge als Argument auf. In diesem Fall wird ein Array mit einem Element zurückgegeben, das die leere Zeichenfolge enthält. Dies erklärt, warum beim Zugriff auf $splittedGSM[0] kein Fehler auftritt.
Wie man ein gültiges Ergebnis erfordert 11 Elemente enthalten, das Problem Elemente durch nur den Zugriff auf die Matrix lösen kann, wenn die Länge Test erfüllt ist, unter Verwendung von elseif anstelle von if:

$splittedGSM = str_split($gsm); 
$correctGSM = TRUE; 

if(!is_array($splittedGSM) || count($splittedGSM) != 11){ 
    $correctGSM = FALSE; 
}elseif($splittedGSM[0] != 0){ 
    $correctGSM = FALSE; 
}elseif($splittedGSM[1] != 7 && $splittedGSM[1] != 8 && $splittedGSM[1] != 9){ 
    $correctGSM = FALSE; 
}elseif($splittedGSM[2] != 0 && $splittedGSM[2] != 1){ 
    $correctGSM = FALSE; 
} 
foreach ($splittedGSM as $realgsm) { 
    if(!is_numeric($realgsm)){ 
    return FALSE; 
    } 
} 
Verwandte Themen