【问题标题】:How can I strip whitespace only elements from an array?如何从数组中删除只有空格的元素?
【发布时间】:2011-04-19 00:02:03
【问题描述】:

如何删除数组中只包含空格的所有元素,不是"foobar "这样的元素中的空格,但只是像" "这样的空数组元素?

谢谢。

【问题讨论】:

    标签: php arrays whitespace


    【解决方案1】:

    preg_grep() 是你的朋友。

    $array = array("This", " ", "is", " ", "a", " ", "test.");
    
    $array = preg_grep('/^\s*\z/', $array, PREG_GREP_INVERT);
    
    var_dump($array);
    

    CodePad.

    这将根据\s 字符类(空格、制表符和换行符)删除字符串为空白或仅包含空格的所有数组成员。

    输出

    array(4) {
      [0]=>
      string(4) "This"
      [2]=>
      string(2) "is"
      [4]=>
      string(1) "a"
      [6]=>
      string(5) "test."
    }
    

    【讨论】:

    • 不错的一个。这看起来比循环快。
    • 您应该提供一个有效的模式。而且我不确定你提供的那个是否有效。更好:preg_grep('^\s*$', $array, PREG_GREP_INVERT);
    • @sims 我确定它仍在内部循环:)
    • TIL 关于 PREG_GREP_INVERT,哈哈。
    • 不比 loog 快...只是看起来更好...速度可能差不多。
    【解决方案2】:
    $arr = array("This", " ", "is", " ", "a", " ", "test.");
    $result = array();
    for($arr as $x) {
         if(!preg_match("/^\s*$/", $x)) $result[] = $x;
    }
    $arr = $result;
    

    【讨论】:

      【解决方案3】:

      此代码利用array_filter 的回调参数。它将循环数组,在值上调用trim(),如果结果值为false,则将其删除。 (一个空字符串会)

      $a = array_filter($a, 'trim');

      【讨论】:

      【解决方案4】:
      $array = array('foo','  ','bar ');
      
      foreach ($array as $key => $value) {
          if (trim($value) == '') unset($array[$key]);
      }
      

      转储时的数组包含:

      array(2) {
        [0]=>
        string(3) "foo"
        [2]=>
        string(4) "bar "
      }
      

      【讨论】:

        【解决方案5】:

        foreach($arr as $key=>$value)

        {

         if($value=" ")
        
          {
        

        unset($arr[$key]);

        /* optional */array_values($arr);

          }
        
        }
        

        【讨论】:

        • 是的...我以为我可以通过这种方式正确地做到这一点...只是在链接后我发现这个所见即所得的编辑器不支持它,但是在获得链接后我很懒。跨度>
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-18
        • 2019-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多