我试图删除数组中的空行,但我可以实现这一点。我需要一些帮助。
以下是我尝试的内容:
$specialites = serialize($_POST['specialite']);
foreach($specialites as $specialite) {
if($specialite=='')
unset($specialites[$specialite]);
}
但每一次,我都会收到错误(空白页)。我需要帮助。谢谢!
答案 0 :(得分:4)
你需要取消设置key
而不是值,不要像b0s3那样序列化
foreach($specialites as $key => $specialite) {
if($specialite==''){
unset($specialites[$key]);
}
}
如果这还不行。你可以创建另一个变量并使用它
$newSpecialites = array();
foreach($specialites as $key => $specialite) {
if(trim($specialite)){ //trim spaces then check if its not empty
$newSpecialites[] = $specialite;
}
}
print_r($newSpecialites);
答案 1 :(得分:1)
如果在运行循环之前serialize
,它将不是一个数组。这就是为什么你得到错误(空白页)。修改后你应该serialize
-
$specialites = $_POST['specialite'];
foreach($specialites as $key => $specialite) {
if(empty($specialite) || $specialite == '')
unset($specialites[$key]);
}
$specialites = serialize($specialites);
答案 2 :(得分:0)
我检查了serialize
之前调用foreach
的问题,这是实际问题。所以实际上你需要这样做: -
$specialites = $_POST['specialite'];
foreach($specialites as $key=> $special) {
if(empty($special) || $special == '')
unset($specialites[$key]);
}
$specialites = serialize($specialites);
注意: - 如果你在一个变量上调用了serialize
那么它将不再有数组类型变量。
答案 3 :(得分:0)
创建一个temperory数组,然后在其中填充非空值
$temp_array=aray();
foreach($specialites as $key=>$specialite) {
if($specialite!='')
$temp_array[$key]=$specialite;
}
$specialites=$temp_array;