2016-09-17 9 views
-2

32行目と33行目で未定義の1と2があります。何が起こっているのか、エラーが何を意味しているのか分かりません。どうすればいいですか?未定義オフセット1と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

このコードでは? – Bhavin

+0

コード内にあります。 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 –

+0

if(!isset($ splittedGSM [1])){$ splittedGSM [1] = null}条件で試す必要がありますか? – Bhavin

答えて

0

以下のコードを試してください。オフセットは設定されていないため、定義されていないため、オフセットが設定されていない場合はnullになります。そのためにはisset()関数を使用する必要があります。

$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

問題は、あなたが最初にそれらが存在することを確認することなく、要素1と$splittedGSMの2にアクセスしようということです。空の文字列を引数としてstr_splitと呼んでいる可能性があります。この場合、空の文字列を含む1要素の配列が返されます。これは、$splittedGSM[0]にアクセスするときにエラーが発生しない理由を説明しています。
あなたは11の要素を含むことが有効な結果を必要とする、使用して、長さのテストが満たされる場合にのみ配列要素にアクセスすることによって、問題を解決することができるelseif代わりifの:一方はライン32および33である

$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; 
    } 
} 
関連する問題