我如何删除仅包含空格的数组的所有元素, not 像"foobar "
这样的元素中的空格,但只删除像" "
这样的空数组元素?
感谢。
答案 0 :(得分:6)
preg_grep()
是你的朋友。
$array = array("This", " ", "is", " ", "a", " ", "test.");
$array = preg_grep('/^\s*\z/', $array, PREG_GREP_INVERT);
var_dump($array);
这将删除字符串为空的所有数组成员,或者只根据\s
字符类(空格,制表符和换行符)由空格组成。
array(4) {
[0]=>
string(4) "This"
[2]=>
string(2) "is"
[4]=>
string(1) "a"
[6]=>
string(5) "test."
}
答案 1 :(得分:3)
$arr = array("This", " ", "is", " ", "a", " ", "test.");
$result = array();
for($arr as $x) {
if(!preg_match("/^\s*$/", $x)) $result[] = $x;
}
$arr = $result;
答案 2 :(得分:2)
此代码利用array_filter
的回调参数。它将循环数组,对值调用trim()
,如果结果值的计算结果为false
,则将其删除。 (这是一个空字符串)
$a = array_filter($a, 'trim');
答案 3 :(得分:0)
$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 "
}
答案 4 :(得分:0)
foreach($ arr as $ key => $ value)
{
if($value=" ")
{
unset($ ARR [$键]);
/* optional */
array_values($ arr);
}
}