我写了一个小脚本,它应该创建一个看起来像这样的数组:
array(1 => array( 'month' => 'Jan',
'salary' => '01/31/2013',
'bonus' => '02/15/2013'),
2 => array('month' => '',...));
你得到了基本的想法:主数组中的索引是月份(数字),每个月份都有一个要动态填充的数组。month
关键取决于用户请求的语言,工资和奖金被分配工资和/或奖金的支付日期。到目前为止还没有惊喜。
要获得该数组的基本结构,我认为这将是最简单的:
$this->months = array_fill_keys(range(1,12), array( 'month' => null,
'salary' => null,
'bonus' => null));
然后我填充数组,一切都运行顺利,直到我想将数据写入文件,我这样做了:
private function writeFile()
{
foreach($this->months as $key => $vals)
{
if ($vals['month'] === null)
{//Only filled from date x to date y, some months can be empty
continue;
}
//this seems to raise notices?
if ($vals['salary'] === null)
{
$vals['salary'] = 'Does not apply';
}
fwrite($this->file, implode(',', $vals).PHP_EOL);
}
fclose($this->file);
return $this;
}
我检查是否salary
为空的行会引发通知:"Warning: Undefined index salary"。目前我不得不将其添加到代码中:
if (!array_key_exists('salary', $vals) || $vals['salary'] === null)
{
if (!array_key_exists('bonus', $vals) || $vals['bonus'] === null)
{
break;
}
$vals['salary'] = 'Does not apply';
}
为了得到我需要的结果。我用谷歌搜索了这个,偶然发现这个错误报告,最后一次修改是在 4 年前(2009-05-08),但状态仍然设置为“无反馈”。
有没有其他人遇到过类似的故障/错误?或者我在这里错过了什么?我怎样才能避免这个问题,而不需要太多if
的 's 和函数调用而不更改我的设置(E_STRICT | E_ALL
应该如此)。
顺便说一句:我在 Slackware 14 上运行 PHP 5.4.7。对于这个小应用程序,我使用了 2 个 Symfony 组件(ClassLoader 和 Console),但由于这是一个与 Symfony 无关的对象的一部分,除了从被加载通过UniversalClassLoader
我不认为这是相关的。
由于据说该错误是PDO
相关的:是的,我正在使用 PDO,但在另一个类中。