从关联数组中弹出固定的键 - 值对 - PHP

时间:2012-11-09 05:56:06

标签: php arrays associative-array pop

我有这样的数组结构:

Main-Array
(
    [0] => Sub-Array
    (
        [0] => AAA
        [1] => BBB
        [2] => -
        [3] => DDD
    )

    [1] => Sub-Array
    (
        [0] => 111
        [1] => 222
        [2] => -
        [3] => 444
    )
)

根据上面提到的例子,我想弹出 Main-Array [0] [2]& Main-Array [1] [2] 在数组之外,因为它们都是空的。

我知道通过执行foreach循环并根据需要分配新数组来做到这一点..但是如果有更好的方法或任何我不知道的PHP数组函数..那么欢迎提出建议.. < / p>

4 个答案:

答案 0 :(得分:2)

请使用unset($index);从数组中删除项目

请注意,在上述情况下,索引保持不变。

否则

如果您想要归一化整数键,可以使用

array_splice()。另一种选择是在array_values()

之后使用unset()

答案 1 :(得分:1)

试试这个。

$array_fill = array(array('AAA','BBB','-','DDDD'), array(111,222,'-',444));
function clean_now($var)
{
    return $var == '-'? false: true;    
}

function cleanme($var)
{
    return array_filter($var, "clean_now"); 
}

print_r(array_map("cleanme",$array_fill));

修改

很抱歉,好吧,因为它的二维数组,我首先使用array_map来过滤每个数组内部的数组,然后array_filter从数组中删除'-'。< / p>

尝试复制我的代码然后在你身边运行它。我添加了变量值。

答案 2 :(得分:0)

尝试

foreach ($main_arr as &$arr) {
  $arr = array_filter($arr);
}

答案 3 :(得分:0)

$a[]=array(DD,AA,'',1);
$a[]=array(mm,er,'',4);
foreach($a as $b)
{
    rsort($b);
    array_pop($b);
    $c[]=$b;
}
print_r($c);

因为你说两者都是空的,这是实现它的最简单方法之一 之后你的输出将如下

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => DD
            [2] => AA
        )

    [1] => Array
        (
            [0] => 4
            [1] => mm
            [2] => er
        )

)