如何在PHP和PHP中过滤掉数组中的空白值重新索引数组

时间:2017-04-18 14:30:33

标签: php arrays

我使用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
)

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

3 个答案:

答案 0 :(得分:3)

内置array_filter()的PHP将为您完成此任务:

$sizes = array_filter($sizes);

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

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

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

答案 1 :(得分:1)

将此代码替换为此行=> $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);

答案 2 :(得分:0)

这是最好的方法

# 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的所有条目< / strong>即可。)