【发布时间】:2012-08-17 23:05:02
【问题描述】:
我很困惑为什么会发生这个错误,如果有人可以帮忙
foreach ( $filters as $_filter )
{
switch ($_filter[1])
{
case "/FlateDecode" :
if (function_exists("gzuncompress") )
{ echo 'testing1';
$xrefStreamData = 0 < strlen( $xrefStreamData ) ? gzuncompress( @$xrefStreamData ) : "";
}
else
{
$this->error( sprintf( "To handle %s filter, please compile php with zlib support.", $_filter[1] ) );
}
if ( $xrefStreamData === false )
{ echo 'testing2';
$this->error( "Error while decompressing stream." );
}
break;
case "/LZWDecode" :
echo 'testing3';
include_once( "filters/FilterLZW_FPDI.php" );
//does not go through
$decoder = new FilterLZW_FPDI( $this->fpdi );
$xrefStreamData = $decoder->decode( $xrefStreamData );
break;
case "/ASCII85Decode" :
echo 'testing4';
include_once( "filters/FilterASCII85_FPDI.php" );
$decoder = new FilterASCII85_FPDI( $this->fpdi );
$xrefStreamData = $decoder->decode( $xrefStreamData );
break;
case null :
break;
}
$this->error( "Unsupported Filter: %s", $_filter[1] );
}
我将回显设置为调试以查看它通过哪些循环,我得到的输出是 testing1 不支持的过滤器 %s
这是否意味着数组$_filter 为空?如果它是 null 为什么它首先进入 foreach 循环?
【问题讨论】:
-
"如果它为空,为什么它首先进入 foreach 循环?"如果 $filters 不为空,foreach 循环将运行,它不关心 $_filters。例如,
$filters=array(array("foo"))将创建一个数组,其中$_filters[1]为空。你确定 $filters 真的是数组数组,而不是字符串数组吗?