【问题标题】:How to filter out blank values from an array in PHP & Reindex the array如何从 PHP 中的数组中过滤出空白值并重新索引数组
【发布时间】:2017-09-14 11:03:35
【问题描述】:

我正在使用print_r($_POST["prod_sizes"]); 打印出值

print_r($_POST["prod_sizes"]);

所以我得到这样的输出 => dsf,,thisnajndk,faklsf,klam,flkamlkd,mklmd,l,,adad

之后我使用这个代码:

$sizes = strip_tags(preg_replace('/[^a-z0-9,]/i', '', $_POST["prod_sizes"]));
$var = explode(',', $sizes);
print_r($var);

我得到像这样的输出

Array
(
  [0] => dsf
  [1] => 
  [2] => thisnajndk
  [3] => faklsf
  [4] => klam
  [5] => flkamlkd
  [6] => mklmd
  [7] => l
  [8] => 
  [9] => adad
)

从上面的输出我们可以看到数组中有一些空白值。如何删除那些空白值?

【问题讨论】:

标签: php arrays


【解决方案1】:

PHP 内置的 array_filter() 会为您执行此操作:

$sizes = array_filter($sizes);

请记住,任何值为equate to false 的值也会被过滤掉。因此,如果零和 null 是有效值,您将需要编写自己的回调来过滤。

如果您还想重新索引键,只需在结果上使用array_values()

$sizes = array_values(array_filter($sizes));

【讨论】:

  • 我还想重新索引数组
  • 那么就在结果上array_values()。我会相应地更新我的答案。
【解决方案2】:

从此行替换您的代码 => $var = explode(',', $sizes); 并添加:

$var = array_filter(explode(',', $sizes));
$reindexed = array();

foreach ($var as $row)
    {
        if ($row !== null)
           $reindexed[] = $row;
    }

print_r($reindexed);
exit();

现在让我们看看代码的解释

1.) 这是第一个参考链接,我将这个想法提交给文件管理器,但是当你打印数组时,你会看到数组索引是混乱的 => Remove empty array elements

$var = array_filter(explode(',', $sizes));
$reindexed = array();

所以我们创建一个新的变量reindexed作为一个数组来存储重新索引的数组值

2.) 要删除混乱的数组索引并重新索引我从此链接引用的数组 => How to remove null values from an array?

$reindexed = array();

foreach ($var as $row)
    {
        if ($row !== null)
           $reindexed[] = $row;
    }

print_r($reindexed);

【讨论】:

  • 这是一种过于复杂的方法,特别是考虑到 PHP 已经内置了执行此操作的功能。
  • @JohnConde 即使我是 PHP 新手,我只是根据我的逻辑编写代码并提供,您的代码非常完美,因为它非常干净和简单
【解决方案3】:

这是最好的方法

# Array
$array = array('tomato', '', 'apple', 'melon', 'cherry', '', '', 'banana');

返回

Array
(
    [0] => tomato
    [1] => 
    [2] => apple
    [3] => melon
    [4] => cherry
    [5] => 
    [6] => 
    [7] => banana
)

这样做

$array = array_values(array_filter($array));

你明白了

Array
(
    [0] => tomato
    [1] => apple
    [2] => melon
    [3] => cherry
    [4] => banana
)

说明

array_values() :以数字形式返回输入数组和索引的值。

array_filter() : 使用用户定义的函数过滤数组的元素(UDF 如果没有提供输入表中所有值为 FALSE 的条目将被删除.)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2018-03-01
    • 2017-08-14
    相关资源
    最近更新 更多