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

时间:2014-04-15 20:04:08

标签: php arrays

我尝试使用值Mississippi Alabama Texas Massachusetts Kansas搜索$状态。该脚本应执行以下任务:

  1. 在$ states中搜索以xas结尾的单词。将此单词存储在名为$ statesArray。

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

  4. 在$状态中搜索以M开头并以s结尾的单词。将此元素存储在数组的元素2中。

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

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

  7. 将数组$ 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 -->
    

        

  8. 问题在于我没有得到任何输出。

2 个答案:

答案 0 :(得分:1)

$ statesA是一个字符串,而不是一个数组。因此,循环它并没有做任何事情。

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

答案 1 :(得分:0)

如果 $状态不是explode

array方法也可以用来打破句子并将其转换为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     
阿拉巴马州是元素3     马萨诸塞州是元素4