如何在数组中搜索单词并执行任务


How to search for a word in an array and perform tasks?

我正在尝试搜索值为Mississippi Alabama Texas Massachusetts Kansas的$states。脚本应执行以下任务:

  1. 在$states中搜索以xas结尾的单词。将此字存储在名为$statesArray的数组的元素0中。

  2. 在$states中搜索以k开头、以s结尾的单词。执行不区分大小写的比较。将此单词存储在$statesArray的元素1中。

  3. 在$states中搜索以M开头、以s结尾的单词。将此元素存储在数组的元素2中。

  4. 在$states中搜索以a结尾的单词。将此单词存储在数组的元素3中。

  5. 在以M开头的字符串开头的$states中搜索单词。将此单词存储在数组的元素4中。

  6. 将数组$statesArray输出到屏幕。

    <html>
      <body>
      <?php
    $statesA = "Mississippi Alabama Texas Massachusetts Kansas". 
    $statesArray = array();
     foreach($statesA as $state) {
     if(preg_match( '/xas$/', ($state)))
     $statesArray[0] = ($state);
      }
     foreach($statesA as $state) {
     if(preg_match('/^k.*s$/i', ($state)))
     $statesArray[1] = ($state);
    }
     foreach($statesA as $state) {
    if(preg_match('/^M.*s$/', ($state)))
     $statesArray[2] = ($state);
     }
       foreach($statesA as $state) {
    if(preg_match('/a$/', ($state)))
     $statesArray[3] = ($state);
    }
     foreach($statesA as $state) {
     if(preg_match('/^M/', ($state)))
    $statesArray[4] = ($state);
    }
     foreach ( $statesArray as $element => $value )
     print( "Element $element of statesArray is $value <br />");
    
         print( "</p>" );
     ?><!-- end PHP script -->
    

问题是我没有得到任何输出。

$statesA是一个字符串,而不是数组。所以循环它并没有任何作用。

请尝试使用$statesA = array('Mississippi', 'Alabama', 'Texas', 'Massachusetts', 'Kansas');

如果$states不是array,则

explode方法也可用于打断句子并将其转换为array
请查看下面的代码。

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

输出
德克萨斯州是元素0
堪萨斯州是元素1
马萨诸塞州是要素2
阿拉巴马州是第三要素
马萨诸塞州是的第4元素