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


Remove empty and cells from array (same key/value pairs)

嗨,我知道array_filter函数可以用来从数组中删除null和空值。但是,当数组中的每个键都相同时,就不是这样了。

$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);
};

它似乎不起作用。请建议。由于

好吧,这是完全有意义的,因为数组不能有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
)

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

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