-1

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

$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

4 回答 4

2

在添加密钥之前声明您的数组

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

或者干脆做

$arr = array($key=>$value);
于 2012-05-16T12:28:35.513 回答
1

你是什​​么意思[$value]

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

于 2012-05-16T12:29:28.367 回答
1

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

<?php
    error_reporting(E_ALL);

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

    echo '<pre>';
    var_dump($array);
    exit;
?>
于 2012-05-16T12:30:11.143 回答
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 条通知。在我看来,这也不太好看。

谢谢你的帮助。

于 2012-07-18T06:40:07.617 回答