2

誰かが助けてくれるなら、なぜこのエラーが発生しているのか混乱しています

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 unsupported Filter%sです。

これは、配列$_filterがnullであることを意味しますか?nullの場合、そもそもforeachループに入るのはなぜですか?

4

1 に答える 1

1

あなたのコードは大丈夫です。この線:

$this->error( "Unsupported Filter: %s", $_filter[1] );

結局のところ、caseステートメントの条件チェックであるため、常に出力されます。

あなたがすべきことは、次のようなデフォルトの句の下に置くことです:

...
case null :
     break;

default:
     $this->error( "Unsupported Filter: %s", $_filter[1] );
     break;

ところで、null:がどのような場合かはわかりませんが、実際にはデフォルトに置き換えます。

于 2012-08-17T23:09:25.560 に答える