2012-05-31 72 views
1

我正在處理GROUP BY的結果對於常量的所有置換不產生結果的查詢。它顯然會給我一個「未定義索引」的通知,我想知道。在一行中刪除「未定義索引」而沒有重複

當然,我可以使用isset,但這意味着代碼(索引)的重複。另一種方法是使用變量來存儲索引,但這意味着每行這樣的代碼現在是兩行。我喜歡這行代碼的可讀性。

$stat->setMapped($companyStats["Account"][mypackage_MyClass::$STATUS_ACCEPTED]); 

有沒有什麼辦法(除了錯誤操作符@以避免此通知)?

+0

所以,你最終會調用'$ stat-> setMapped(NULL)'的情況下,你沒有索引? – lanzz

+0

可讀性是重要的還是正確的/無錯誤的代碼是重要的? – Josnidhin

+0

@lanzz然而,這是可以接受的。我也可以使用PHP方式'0 + NULL'來明確地需要一個數字。 – vbence

回答

1

您應該從一個數組開始,定義所有的鍵,然後將數組合併到數組中。結果將會在您定義的值的哪個位置出現,並且您的值將爲null(或您設置的任何默認值)。

$allTheKeysYouWant = array('key1' => null, 'key2' => null, ...); 
$keysFilled = array_merge($allTheKeysYouWant, $yourArray); 
1

在setMapped函數聲明,接受基準參數,即

function setMapped(&$companyStats) { 
    if (isset($companyStats)) { 
     .... 
+0

這會起作用,但在setter函數中做一些矯枉過正。 – vbence