2012-05-16 82 views
-1

我已經看到了問題,如this,但如果我給你一個鍵值對爲空數組LIK這添加鍵值陣列而不會觸發陣列

$arr[$key] = $value; 

我得到的PHP通知

Notice: Undefined index: <key> in <path> 

其中當然<key>的是什麼價值在$關鍵。 如何在不觸發通知的情況下將值分配給新密鑰?

謝謝!

編輯:繼承人更精確的代碼。這正是我的代碼中的內容。這有什麼區別?

while(list($k, $sum) = mysql_fetch_row($res)) { 
    if($sum < 0) { 
    $churn[$k] += $sum; 
    } 
} 
+0

以及var $ key的確切位置?爲什麼[$ value]在方括號內? – Elen

+1

你是否像這樣分配變量:'$ arr ['foo'] ='bar';'?這是正確的方法來做到這一點... –

+0

對不起,括號裏面的$值出現錯字,我沒有他們在我的代碼中.. – Nareille

回答

2

聲明您陣列之前addind關鍵

$arr = array(); 
$arr[$key] = $value; 

或者乾脆

$arr = array($key=>$value); 
+1

這是正確的答案 –

+0

除了聲明一個數組之前使用它是完全沒有必要的,而不是錯誤@nareille已經使 – AD7six

+1

它只是正確的方式做它 –

1

你是什麼意思[$value]

你正在試圖獲得的價值帶給定鍵的全新陣列

+0

Sebas,對不起,括號裏有錯別字 – Nareille

+0

哦,這就是爲什麼然後:-)好吧 – Sebas

1

您的語法不正確。試試我的快速測試用例,它不會引起任何注意。在

while(list($k, $sum) = mysql_fetch_row($res)) { 
    if($sum < 0) { 
    $churn[$k] += $sum; 
    } 
} 

<?php 
    error_reporting(E_ALL); 

    $array = array(); 
    $key = 'new_key'; 
    $value = 'new_value'; 
    $array[$key] = $value; 

    echo '<pre>'; 
    var_dump($array); 
    exit; 
?> 
0

問題奠定由於+ =運算符。第一次,它被調用,churn ['whateverWasIn $ k']沒有設置。第二次是罰款,但是..所以要擺脫通知,它必須是這樣的:

(!isset($churn[$k])) ? $churn[$k] = $sum : $churn[$k] += $sum; 

在中間語句中實現缺少+。所以如果這個關鍵字不存在的時候,我想增加$ sum,聲明它並給它$ sum的值,否則只需要將$ sum添加到當前值。

就是這樣。它在代碼中看起來並不漂亮,但它讓我擺脫了200條通知。在我看來,這也不算太好。

感謝您的幫助。