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

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

本文介绍了数组在最后发送空值并重新排列数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数组。

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

If any array values within between becomes empty or null I want any after that empty value to be shifted within that empty array.

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

I used a foreach loop by unsetting an array but the problem is that if there is a 0 value the number greater then 0 shifts at second place and greater then 0 values shifts at 1st place.

我不知道这是怎么回事。

I do not know how come this is happening.

这是我的代码:

$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, '', '', '')


推荐答案

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

Your problem is empty(0) returns TRUE, so it's normal if your 0 value pass on 2nd position.

尝试一下:

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

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

这篇关于数组在最后发送空值并重新排列数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 18:27