我见过这样的问题,但是如果我将键值对分配给空数组,就像这样
$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 个通知。在我看来,这看起来也不太好。
感谢您的帮助。