【问题标题】:PHP remove empty tring from arrayPHP从数组中删除空字符串
【发布时间】:2020-12-28 14:56:55
【问题描述】:

我正在尝试从kat 数组中删除所有空字符串""。我尝试通过使用array_filter 函数来做到这一点:

$array = array_filter($array, "strlen");

问题是kat[4] 现在是一个对象而不是一个数组。

知道如何在不将它们转换为对象的情况下从数组中删除空字符串吗?

之前

之后

【问题讨论】:

    标签: php arrays array-filter


    【解决方案1】:

    选项 1:

    $array = array_filter($array, "strlen");
    var_dump(json_decode(json_encode($array), true));
    

    选项 2:

       <?php
        $kat = [
        ["kat", "1"],
        ["kat", "1"],
        ["kat", "1", ""],
        ["", 'kat', "1.3"],
        
        ];
        
        var_dump(array_map('array_filter', $kat));
    

    【讨论】:

      【解决方案2】:

      如果过滤引入了键/索引跳转/间隙,您可以通过使用 array_values() 重新索引数组来避免在将 Php 数组编码为 JSON 时出现对象。

      如果您的 Php 数组中有 0 个索引顺序键,则在编码为 JSON 时它们将成为 Javascript 数组。

      <?php
      
      $data = 
      [ 
          [
              '', 'foo', 'bar'
          ],
          [
              'baz', 'bat'
          ]
      ];
      
      $filtered =
          array_map(
              function($v) {
                  return array_values(
                      array_filter($v, 'strlen')
                  );
              },
              $data
          );
      
      var_export($filtered);
      $json     = json_encode($filtered);
      var_dump($json);
      

      输出:

      array (
        0 => 
        array (
          0 => 'foo',
          1 => 'bar',
        ),
        1 => 
        array (
          0 => 'baz',
          1 => 'bat',
        ),
      )
      string(29) "[["foo","bar"],["baz","bat"]]"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-06
        • 2016-05-30
        • 2012-03-25
        • 2019-05-21
        • 2018-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多