2017-03-30 74 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 />");