【问题标题】:php - add new index to array without generating an 'undefined index' warningphp - 向数组添加新索引而不生成“未定义索引”警告
【发布时间】:2011-06-28 19:01:20
【问题描述】:

我正在循环一个数组,

如果我在数组中发现错误,我将添加一个名为 error 的键。

但是我收到一大堆“未定义索引”错误警告。

如何在不产生这些警告的情况下执行此操作?


按要求编码
$csv = array();
if (($handle = fopen($filePath, "r")) !== FALSE) {
  while (($csv[] = fgetcsv($handle)) !== FALSE);
  fclose($handle);
}

foreach ($csv as &$row) {
  if (count($row) > $maxCols)
    $maxCols = count($row);

  if (count($row) == 0) {
    $errors++;
    $row['error'] = 'Empty Column!';
    continue;
  }
  //more code
}


$row 在foreach() 中的示例

数组(
[0] => 1
[1] => 12
[2] => 64273566141
[3] => 面包店
[4] => 2009-12-08 09:07:39
[5] => 2009
[6] => 2009-12-08 09:08:35
[7] =>
[8] => 0 )


看到了吗? Full Size http://webspirited.com/proof.png

【问题讨论】:

  • 你能显示一些代码吗?
  • 不,我无法在创建数组时添加空索引,因为它来自fgetcsv
  • issetarray_key_exists 是解决此错误的常用方法,但请提供代码,因为鉴于您所描述的内容,除非我误解了您的要求,否则您不应该收到此错误
  • 该代码不应产生错误...我认为该错误更有可能是您稍后检查错误的地方(即请展开//more code评论)
  • E_NOTICE 错误发生在哪里?在//more code 部分?那里没有任何东西会引发未定义的索引错误。

标签: php arrays indexing


【解决方案1】:

您使用的是== 而不是=

使用比较运算符试图获取可能未定义的数组索引。如果之前没有设置$row['error'],这将触发E_NOTICE未定义索引错误。

【讨论】:

  • 不,我将错误索引添加到有错误的 csv 数组的所有“行”中。请看我上面的代码
  • @Hailwood 根据您问题中的新信息编辑了我的答案
猜你喜欢
  • 1970-01-01
  • 2015-12-15
  • 2011-08-15
  • 2012-12-08
  • 1970-01-01
  • 2018-08-24
  • 2013-11-03
  • 1970-01-01
  • 2017-12-22
相关资源
最近更新 更多