2013-06-04 51 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

相關問題