PHP list()错误:“未定义的偏移量”

时间:2017-11-07 21:05:58

标签: php arrays error-handling

我正在处理一个系统,该系统会在错误类型,消息和详细信息的字符串中向我发送任何意外错误,例如:

      Error Type - Database
      Error Message - Error Executing Database Query.
      Error Detail - [Macromedia][SQLServer JDBC Driver][SQLServer]String or binary data would be truncated. 

现在要创建一个更好的UI我应该处理这些错误,所以我想到了explode(),并找到this user's response in the PHP Manual帮助我用两个分隔符而不是一个分隔符来划分结果:

然后我需要深入了解代码,因为我想要$ key => $ val对,所以我遇到了this answer on StackOverflow

然后我结合了两个并且遇到了这个解决方案:

private function string_to_array( $delimiters, $string )
{
    // start by replacing the $delimiters
    $ready = str_replace( $delimiters, $delimiters[0], $string );

    // create new list() item:
    // $key => $value
    list( $err_typ,     $err_typ_cont,
          $err_mess,    $err_mess_cont,
          $err_det,     $err_det_cont ) = explode( $delimiters[0], $ready ); # line 238

    $result[ trim( $err_typ ) ]     = trim ( $err_typ_cont );
    $result[ trim( $err_mess ) ]    = trim ( $err_mess_cont );
    $result[ trim( $err_det ) ]     = trim ( $err_det_cont );

    return $result;
}

要将我使用array('-', PHP_EOL)的功能称为$delimiters$string将错误消息称为string

当我将一个随机错误插入字符串并调用该函数时,它工作得很好。但是,当我从服务器触发随机错误时,我开始遇到问题,特别是我Undefined offset函数的list()

PHP错误

<br />
<b>Notice</b>:  Undefined offset: 5 in <b>C:\xampp\htdocs\application\_backend\class\class.program.php</b> on line <b>238</b><br />
<br />
<b>Notice</b>:  Undefined offset: 4 in <b>C:\xampp\htdocs\application\_backend\class\class.program.php</b> on line <b>238</b><br />

另外,请注意阵列的所有奇怪和错误:

数组格式的响应

Array
(
    [Error Type] => Database
          Error Message
    [Error Executing Database Query.
          Error Detail] => [Macromedia][SQLServer JDBC Driver][SQLServer]String or binary data would be truncated.
    [] => 
)

这是我在上面看到的相同错误。

我该如何解决?我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

您正在处理的系统显然使用与运行PHP脚本的系统不同的换行符。我建议你处理所有类型的换行符:

$delimiters = array('-', "\r\n", "\n", "\r");