将键值添加到数组而不触发数组

时间:2012-05-16 12:23:56

标签: php arrays

我见过像this这样的问题,但如果我将一个键值对分配给一个空数组,那么

$arr[$key] = $value;

我收到了php通知

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

当然<key>是$ key中的任何值。 如何在不触发通知的情况下为新密钥分配值?

谢谢!

编辑:继承你更精确的代码。这正是我的代码中的最新内容。这有什么不同吗?

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

4 个答案:

答案 0 :(得分:2)

在添加密钥

之前声明您的数组
$arr = array();
$arr[$key] = $value;

或只是做

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

答案 1 :(得分:1)

你是什么意思[$value]

您正在尝试使用给定密钥获取全新数组的值

答案 2 :(得分:1)

您的语法不正确。试试我的快速测试用例,不要发出任何通知。

<?php
    error_reporting(E_ALL);

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

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

答案 3 :(得分:0)

问题在于

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

由于+ =运算符。第一次,它被调用,churn ['whateverWasIn $ k']没有被设置。第二次很好但是..所以要摆脱通知,它必须像:

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

在中间语句中实现缺失+。因此,如果此键在当时不存在,我想将其增加$ sum,声明它并给它$ sum的值,否则只需将$ sum添加到当前值。

这就是全部。它在代码中看起来并不漂亮,但它让我摆脱了200个通知。在我看来,这看起来也不太好。

感谢您的帮助。