Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在数组中搜索单词并执行任务?_Php_Arrays - Fatal编程技术网

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

Php 如何在数组中搜索单词并执行任务?,php,arrays,Php,Arrays,我正在尝试搜索$states,其值为密西西比州、阿拉巴马州、得克萨斯州、马萨诸塞州、堪萨斯州。脚本应执行以下任务: 在$states中搜索以xas结尾的单词。将此单词存储在名为$statesArray的数组的元素0中 在$states中搜索以k开头以s结尾的单词。执行不区分大小写的比较。将该单词存储在$statesArray的元素1中 在$states中搜索以M开头、以s结尾的单词。将此元素存储在数组的元素2中 在$states中搜索以a结尾的单词。将该单词存储在数组的元素3中 在以M开头的字符

我正在尝试搜索$states,其值为
密西西比州、阿拉巴马州、得克萨斯州、马萨诸塞州、堪萨斯州
。脚本应执行以下任务:

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

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

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

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

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

  • 将数组$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不是
    数组

    看看下面的代码

        <?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元素
    堪萨斯州是第一要素
    马萨诸塞州是第二要素
    阿拉巴马州是第三要素
    马萨诸塞州是第四要素