如何通过搜索将字符串放入数组中,然后输出它


How to place strings into an array through a search and then output it?

$states = "Mississippi Alabama Texas Massachusetts Kansas";
$statesA = explode(' ',$states);
$statesArray = array();
foreach($statesA as $state) {
if(preg_match( '/xas$/', trim($state)))
$statesArray[0] = trim($state);
}
foreach($statesA as $state) {
if(preg_match('/^k.*s$/i', trim($state)))
$statesArray[1] = trim($state);
}
foreach($statesA as $state) {
if(preg_match('/^M.*s$/', trim($state)))
$statesArray[2] = trim($state);
}
foreach($statesA as $state) {
if(preg_match('/a$/', trim($state)))
$statesArray[3] = trim($state);
}
foreach($statesA as $state) { #PROBLEM HERE
if(preg_match('/^M/', trim($state)))
$statesArray[4] = trim($state);
}
foreach ( $statesArray as $element => $value )
print( "Element $element of the Array is $value <br />");

任务基本上是在变量状态下输出一个以字母M开头的单词。在$states中有"Mississippi Alabama Texas Massachusetts Kansas"。当我试图打印出来,Massachusetts打印出来,而不是Mississippi。为什么呢?

<?
 foreach($statesA as $state) { #PROBLEM HERE
  if(preg_match('/^M/', trim($state)))
  $statesArray[4] = trim($state);
  }
?>

在上面的代码中,Massachusetts和Mississippi都匹配您的表达式,它们都存储在$statesArray[4]中。如果你只想要第一个匹配,也许你还应该检查$statesArray[4]是否已经设置。因此,像这样的代码应该可以工作:

<?
  foreach($statesA as $state) { #PROBLEM HERE
    if(preg_match('/^M/', trim($state)) && !isset($statesArray[4]))
    $statesArray[4] = trim($state);
  }
?>

只有在$statesArray[4]没有设置的情况下才会填充。

让我知道这是否适合你