我有一个数组。
如果之间的任何数组值变为空或为空,我希望在该空值之后的任何值在该空数组内移动。
我通过取消设置数组来使用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, '', '', '')
答案 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, '', '', '')