如何在PHP中过滤掉数组中的空值并重新索引数组
如何在PHP中过滤掉数组中的空值并重新索引数组
我使用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中,有时候我们需要从数组中过滤掉空值,并重新对数组进行重新索引。下面是一个解决这个问题的方法:
首先,我们有一个包含空值的数组:
# 数组 $array = array('tomato', '', 'apple', 'melon', 'cherry', '', '', 'banana');
上述数组中包含了一些空字符串。我们希望将这些空值从数组中过滤掉,并重新对数组进行索引。
为了实现这个目标,我们可以使用array_filter()
函数和array_values()
函数的结合。下面是具体的操作:
$array = array_values(array_filter($array));
通过以上操作,我们得到了过滤掉空值并重新索引的数组。
解释:
array_values()
函数会返回数组中的所有值,并重新对数组进行数值索引。
array_filter()
函数可以根据用户自定义的函数(UDF)来过滤数组的元素。如果没有提供自定义函数,那么会删除数组中所有值为FALSE的元素,包括空字符串。
通过以上方法,我们成功地过滤掉了数组中的空值,并对数组进行了重新索引。最终得到的数组只包含非空值,并按照数值索引进行排列。
以下是最终得到的数组:
Array ( [0] => tomato [1] => apple [2] => melon [3] => cherry [4] => banana )
这种方法非常简洁有效,能够快速地过滤掉数组中的空值并重新索引。在处理数据时,这个方法非常实用。
在PHP中,有时我们需要从数组中过滤掉空值并重新索引数组。下面是一个解决这个问题的方法。
首先,替换代码中的这一行:$var = explode(',', $sizes);
,并添加以下代码:
$var = array_filter(explode(',', $sizes)); $reindexed = array(); foreach ($var as $row) { if ($row !== null) $reindexed[] = $row; } print_r($reindexed); exit();
上述代码的作用如下:
1. 使用array_filter()
函数从$sizes
字符串中创建一个数组$var
。这个函数会过滤掉数组中的空值。
2. 创建一个新的数组$reindexed
来存储重新索引的数组值。
3. 使用循环遍历$var
数组中的每个元素,如果元素不为null,则将其添加到$reindexed
数组中。
4. 使用print_r()
函数输出$reindexed
数组的值。
5. 使用exit()
函数停止程序的执行。
这种方法的原因是,当我们从一个字符串中使用explode()
函数创建一个数组时,数组中的元素可能包含空值。为了去除这些空值并重新索引数组,我们使用了array_filter()
函数和循环遍历的方式。
这个方法的解决方法是使用array_filter()
函数过滤掉数组中的空值,并使用循环遍历来重新索引数组。这样就可以得到一个不包含空值的重新索引的数组。
需要注意的是,尽管这个方法可以解决问题,但PHP本身已经提供了内置的功能来实现相同的操作。因此,这只是一种可选的解决方法,根据个人的逻辑和需求选择使用。
问题的出现原因:在PHP中,当我们有一个数组,并且想要过滤掉其中的空值,并重新索引数组时,需要使用特定的函数来实现。
解决方法:PHP内置的array_filter()函数可以帮助我们过滤掉数组中的空值。使用该函数的方式是:$sizes = array_filter($sizes)。需要注意的是,任何被判定为false的值也会被过滤掉。因此,如果0和null是有效值,那么我们需要编写自己的回调函数来进行过滤。
如果我们还希望重新索引数组的键,可以使用array_values()函数对结果进行处理。即:$sizes = array_values(array_filter($sizes))。
如果我们只想重新索引数组,可以直接使用array_values()函数对结果进行处理。
我们可以通过使用array_filter()函数来过滤掉数组中的空值,同时使用array_values()函数来重新索引数组。