我正在尝试创建一个脚本来删除数组中的所有空元素。
然而,[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>
答案 0 :(得分:4)
如果您只是删除空值,请尝试使用unset($idArray[$key])
。如果您只想尝试删除整个第一个元素,请使用array_shift()
答案 1 :(得分: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");
?>