在不触发数组的情况下将键值添加到数组


Add key value to array without triggering an array

我见过这样的问题,但是如果我将键值对分配给空数组,就像这样

$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;
  }
}

在添加键之前声明数组

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

或者干脆做

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

你是什么意思[$value]

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

你的语法不正确。只需尝试我的快速测试用例,它不会引起任何通知。

<?php
    error_reporting(E_ALL);
    $array = array();
    $key = 'new_key';
    $value = 'new_value';
    $array[$key] = $value;
    echo '<pre>';
    var_dump($array);
    exit;
?>

问题出在

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 个通知。在我看来,这看起来也不太好。

感谢您的帮助。