Embora a maior parte do código existente de PHP 5 funcione sem alterações, devem ser observadas algumas alterações incompatíveis com versões anteriores:
Anteriormente, arrays declarados como propriedades de classe que misturavam chaves explícitas e implícitas poderiam ter elementos de array silenciosamente sobrescritos se um chave implícita fosse a mesma de uma implícita sequencial. Por exemplo:
<?php
class C {
    const ONE = 1;
    public $array = [
        self::ONE => 'foo',
        'bar',
        'quux',
    ];
}
var_dump((new C)->array);
?>Saída do exemplo acima no PHP 5.5:
array(2) {
  [0]=>
  string(3) "bar"
  [1]=>
  string(4) "quux"
}
Saída do exemplo acima no PHP 5.6:
array(3) {
  [1]=>
  string(3) "foo"
  [2]=>
  string(3) "bar"
  [3]=>
  string(4) "quux"
}
   json_decode() agora rejeita variantes
   dos literais JSON true, false e
   null que não estejam em minúsculas, conforme especificação JSON, e
   define json_last_error() adequadamente. Anteriormente, entradas
   para json_decode() que consistiam somente de um desses
   valores em maiúsculas ou misturas de maiúsculas/minúsculas eram aceitas.
  
Esta alteração somente afetará casos onde um JSON inválido estiver sendo passado para json_decode(): entrada JSON válida não é afetada e continuará a ser avaliada normalmente.
Todos os fluxos criptografados de cliente agora permitem a verificação de mesmo nível por padrão. Por padrão, será usada a coleção de CAs padrão do OpenSSL para verificar o certificado de mesmo nível. Na maioria dos casos, nenhuma alteração precisará ser feita para se comunicar com servidores com certificados SSL válidos, pois as distribuições geralmente configuram o OpenSSL com coleções de CAs bem conhecidos.
    A coleção de CAs padrão pode ser substituída globalmente definindo
    a configuração openssl.cafile ou openssl.capath, ou
    por requisição usando as opções de contexto
    cafile ou
    capath
    .
   
    Embora em geral não seja recomendado, é possível desabilitar a verificação
    de certificado de mesmo nível para uma requisição definindo a opção de contexto
    verify_peer
    para false e é possível desabilitar a verificação de nome de mesmo nível definindo a opção de contexto
    verify_peer_name
    para false.
   
Recursos GMP agora são objetos. A API funcional implementada na extensão GMP não foi alterada, e o código deve ser executado sem modificação a menos que ele verifique explicitamente por um recurso usando a função is_resource() ou outra similar.
mcrypt_encrypt(), mcrypt_decrypt(), mcrypt_cbc(), mcrypt_cfb(), mcrypt_ecb(), mcrypt_generic() e mcrypt_ofb() não mais aceitarão chaves ou IVs com tamanhos incorretos e os modos de criptografia de bloco que exigem IVs agora falharão se um IV não for fornecido.
