0

我正在尝试制作一个脚本来从我的数组中删除任何空元素。

但是,[0] 插槽中有一个空元素,因此当我取消设置该值时,它会删除我的整个数组。至少我认为这是正在发生的事情,为什么这不起作用?

<?php

$idfile = file_get_contents("datafile.dat");
$idArray = explode("\n", $idfile);
print_r($idArray);
foreach ($idArray as $key => &$value) {
    echo "Key is: ".$key." and value is: ".$value."<br />\n";
    if ($value == ""){
        echo "Killing value of ".$value."<br />";
        unset($value[$key]);
    }
    $value = str_replace("\n", "", $value);
    $value = str_replace("\r", "", $value);
    $value = $value.".dat";
}

print_r($idArray);
?>

这是输出:

Array
(
    [0] => 
    [1] => test1
    [2] => test2
)
Key is: 0 and value is: <br>
Killing value of <br>
4

2 回答 2

4

如果您只是删除一个空值,请尝试使用unset($idArray[$key])。如果您只是想整体删除第一个元素,请使用array_shift()

于 2012-08-08T20:10:30.887 回答
1

另一个不错的解决方案是使用array_filter()方法,它将处理迭代并为您返回过滤后的数组:

<?php

function isNotEmpty($str)
{
    return strlen($str);
}

$idfile = file_get_contents("datafile.dat");
$idArray = explode("\n", $idfile);
$idArray = array_filter($idArray, "isNotEmpty");

?>
于 2012-08-08T20:14:59.220 回答