从数组中删除空和单元格(相同的键/值对)

时间:2013-06-04 01:31:25

标签: php pdo

您好我知道array_filter函数可用于从数组中删除null和empty值。但不是当数组中的每个键都相同时。

$array4 = array('bean1' => 'blue', 'bean2' => null, 'bean3' => 'red', 'bean4' => 'white');
$keynull = array_search(null, $array4);
$firephp -> info('$Keynull = '.$keynull);

if($keynull)
{
    $firephp -> info('There is one or more null or empty strings in $array4!, so clean it up');
    $arrayfiltered = array_filter($array4);
    $firephp -> info($arrayfiltered);

};

上面的脚本可以工作。但是,如果我使用bean而不是bean#,请参见下文....

$array4 = array('bean' => 'blue', 'bean' => null, 'bean' => 'red', 'bean' => 'white');
$keynull = array_search(null, $array4);
$firephp -> info('$Keynull = '.$keynull);

if($keynull)
{
    $firephp -> info('There is one or more null or empty strings in $array4!, so clean it up');
    $arrayfiltered = array_filter($array4);
    $firephp -> info($arrayfiltered);

};

它似乎不起作用。请指教。感谢

1 个答案:

答案 0 :(得分:2)

嗯,这很有道理,因为数组不能有相同键的4个值。基本上,键的值将覆盖最新的指定值。要看清楚的图片:


<?php
    $array1 = array('bean1' => 'blue', 'bean2' => null, 
                    'bean3' => 'red', 'bean4' => 'white');
    print_r($array1);
?>

输出

Array
(
    [bean1] => blue
    [bean2] => 
    [bean3] => red
    [bean4] => white
)

<?php
     $array2 = array('bean' => 'blue', 'bean' => null, 
                     'bean' => 'red', 'bean' => 'white');
     print_r($array2);
?>

输出

Array
(
    [bean] => white
)

我不知道这是否会有所帮助,但为什么不直接使用SQL过滤?

SELECT batch FROM test 
WHERE  mfg_code = mfgnum AND
       batch IS NOT NULL
GROUP BY batch ORDER BY batch DESC;

无论采用何种提取方式,都可以使用。