数组在最后发送空值并重新排列数组

时间:2018-07-12 09:49:36

标签: php arrays

我有一个数组。

如果之间的任何数组值变为空或为空,我希望在该空值之后的任何值在该空数组内移动。

我通过取消设置数组来使用foreach循环,但是问题是,如果存在0值,则该数字大于0将在第二位移位,而大于0则在第一位置移位。

我不知道这是怎么发生的。

这是我的代码:

$val1     = $this->input->post('current');
$val2     = $this->input->post('graph1');
$val3     = $this->input->post('graph2');
$val4     = $this->input->post('graph3');
$val5     = $this->input->post('graph4');
$filter   = array($val1, $val2, $val3, $val4, $val5);
//array(0, '', 2, '', '')
foreach ($filter as $key => $value) { 
    if (empty($value)) { 
        unset($filter[$key]);
        $filter[] = $value;
    }
}

$filter_new = array_values($filter);
//array(2, 0, '', '', '') 

1 个答案:

答案 0 :(得分:2)

您的问题是empty(0)返回TRUE,因此,如果您的0值传递到第二个位置,这是正常的。

尝试一下:

    foreach ($filter as $key => $value) { 
        if ($value == '') { 
            unset($filter[$key]);
            $filter[] = $value;
        }
    }

    $filter_new = array_values($filter);
    //array(0, 2, '', '', '')