我见过像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;
}
}
答案 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个通知。在我看来,这看起来也不太好。
感谢您的帮助。