2017-03-30 15 views
-2

正規表現を使用していくつかのマッチングを行う次のコードがあります。しかし私は修正できない未定義のオフセットエラーが発生しています。なぜ、どのように問題を解決するのかを理解するのに役立つことがありますか?私は、この問題は$マッチでする必要がありますが、私は確信していないと思う。定義されていないオフセットを解決する方法:1エラーPHP

$states = "Mississippi Alabama Texas Massachusetts Kansas"; 
$statesArray = array(); 


if(preg_match('/xas$/', $states,$match)){ 
$statesArray[0] = $match[ 1 ]; 
} 


if(preg_match('/^k.*s$/i', $states,$match)){ 
$statesArray[1] = $match[ 1 ]; 
} 


if(preg_match('/^M.*s$/', $states,$match)){ 
    $statesArray[2] = $match[ 1 ]; 
} 

if(preg_match('/a$/', $states,$match)){ 
$statesArray[3] = $match[ 1 ]; 
} 

if(preg_match('/^M/', $states,$match)){ 
$statesArray[4] = $match[ 1 ]; 
} 



foreach ($statesArray as $element => $value) 
    print("$value <br />"); 

答えて

0

あなたのPHP 7.0の下で正常に動作しているコードが、私はあなたがより良い以下よりよい保守性のために、このようなコードを書くと思う:

<?php 
$states = "Mississippi Alabama Texas Massachusetts Kansas"; 
$statesArray = array(); 

$i=0; 
if(preg_match('/xas$/', $states,$match)){ 
    $statesArray[$i++] = $match[ 0 ]; 
} 


if(preg_match('/^k.*s$/i', $states,$match)){ 
    $statesArray[$i++] = $match[ 0 ]; 
} 


if(preg_match('/^M.*s$/', $states,$match)){ 
     $statesArray[$i++] = $match[ 0 ]; 
} 

if(preg_match('/a$/', $states,$match)){ 
    $statesArray[$i++] = $match[ 0 ]; 
} 

if(preg_match('/^M/', $states,$match)){ 
    $statesArray[$i++] = $match[ 0 ]; 
} 



foreach ($statesArray as $element => $value) 
     print("$value <br />"); 
関連する問題