无法在我的数组中取消设置行

时间:2015-06-01 09:22:15

标签: php

我试图删除数组中的空行,但我可以实现这一点。我需要一些帮助。

以下是我尝试的内容:

        $specialites = serialize($_POST['specialite']);
        foreach($specialites as $specialite) {
            if($specialite=='')
                unset($specialites[$specialite]);
        }

但每一次,我都会收到错误(空白页)。我需要帮助。谢谢!

4 个答案:

答案 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;
相关问题