0

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

$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

1 回答 1

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
)

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

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

无论任何获取模式如何,这都将起作用。

于 2013-06-04T01:55:58.000 回答