Testei o seu array, que copiei manualmente e funcionou, serializando ele e armazenando no arquivo de cache.
Deu certo também. Não sei ao certo se o erro que você reportou está no mesmo offset, mas eu tentei falsificar o conteúdo do cache envolvendo a string em aspas simples e gerou um erro de offset (obviamente) perto, se não igual, do número que você obteve.
E os conteúdo são os mesmos, nem uma aspa a mais ou a menos. O código de depuração citado funciona normal, a diferença é que testou com print_r para "ver melhor" (mas com var_dump() obtenho sucesso de todo modo).
O que pode ser?
[EDIT]
Segui sua sugestão a respeito do Zend_Json. Implementei, recriei o cache, agora de extensão .json e testei o sistema.
E o que aconteceu? Simplesmente TODO o array de cache passou a ser retornado, com excesão dos índices 4 e 232 que correspondem, respectivamente, às entradas do HomeController e do Exception.
O curioso é que eu não as modifiquei, elas continuam com o mesmo checksum (verificado por comparação manual simultânea), o que strcmp() deveria retornar zero.
O mesmo vale para os outro índices que, por não tiverem sido enviados via POST, nem entram na verificação. E ainda assim estão sendo incluídos na diferença.
Dessa vez, vou linkar esse arquivo .json e a classe que o gera.
Esta classe,por sua vez, não requer a estrutura Zend Framework, mas,desde agora, requer o Zend_Json.
A linha do unserialize() agora, em JSON, ficou:
$cache = Zend_Json::decode( file_get_contents( $cacheFile ) );
Acredito que não haja necessidade, mas em todo caso, para usar a classe Checksum (que gera o cache), basta obter a instância Singleton com getInstance() e invocar o método renewChecksum(), passando um nome de arquivo como parâmetro.
P.S.: Você disse anteriormente que para array_udiff(), o que interessa é o zero. Por quê? Zero não siginifica que já está presente nos outros arrays?
[Anexo - MediaFire]
Checksumwordpress.themes.Corporative.json
Edição feita por: Bruno Augusto, 11/02/2010, 12:34.