2013-06-04 52 views
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); 

}; 

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

回答

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; 

这将工作无论任何提取模式。

+0

什么是更好的解决方案? – user1739825

+0

为什么你想拥有多个值相同的密钥? – invisal

+0

这就是我从数据库中查询后变成的样子。在查询后为每个键添加增量值会更好吗?查询后如何向这些键添加增量? – user1739825

相关问题