São operadores que estabelecem uma relação de equivalência entre dois valores. Eles tanto podem determinar se dois valores são iguais (ou não iguais) entre si, ou se um é maior (ou menor) do que o outro. O resultado de uma operação comparação é sempre um valor Booleano.

Existem quatro operadores de equivalência:

== Equivalentes. Verifica se os dois operandos são equivalentes,  o que significa que eles podem ser convertidos para o tipo de dados comum que eles têm o mesmo valor, mais não necessariamente do mesmo tipo.
=== Identidade. Verifica se os operandos possuem o mesmo Tipo e têm o mesmo valor.
!= Não Equivalentes. Verifica se os dois operandos são não equivalentes, sem verificar o seu tipo.
!== Operador não-idênticos. Verifica se os dois operandos não possuem o mesmo tipo de dados ou não têm o mesmo valor.

É muito fácil confundir o operador de atribuição (=) pelo operador de comparação (==) e este é, na verdade, um dos erros mais comuns na programação.  Uma solução parcial para este problema é utilizar um padrão de projetos em que o programador inverte a ordem de seus operandos quando se compara uma variável com valor. Por exemplo, em vez de:

echo $a == 10;

Você poderia escrever:

echo 10 == $a;

Estas duas operações são totalmente idênticas, mas, devido à esquerda operador ser um valor, se tivesse esquecido de um dos sinais iguais, o parser teria jogado um erro, assim, alertando-o para o seu erro.
Outros conjuntos de diferentes operadores estabelecem uma relação de desigualdade entre os dois operandos, ou seja, se um dos dois é maior do que o outro:

< Retorna true se o operando da esquerda for menor que o da direita.
<= Retorna true se o operando da esquerda for menos ou igual ao da direita.
> Retorna true se o operando da esquerda for maior que o da direita.
>= Retorna true se o operando da esquerda for maior ou igual ao da direita.

Embora o processo seja claro para os números, as coisas mudar um pouco para outros tipos de dados, por exemplo, strings são comparadas através da análise do valor binário de cada byte na seqüência até dois valores diferentes são encontrados, o resultado é então determinado pelo valor numérico desses dois bytes. Por exemplo:

$esquerda = “ABC”;
$direita = “ABD”;
echo (int) ($esquerda > $direita);

O código acima imprime 0 (ou seja, falso), porque a letra D é mais elevado na variável da direita, do que na letra C da variável da esquerda. Enquanto você pode poderia pensar que esta comparação ocorre por causa da ordem alfabética. Considere, os seguintes exemplos:

$esquerda = ’maça’;
$direita = ’Maça’;
echo (int) $esquerda > $direita;

Neste exemplo será impresso 1 (verdadeiro), pois o valor ASCII do caractere “a” é 97 que por sua ver é mais elevado que o caractere “A” que é 65.

OBS: A utilização de operadores comparação com arrays também introduz um conjunto de regras diferentes. Veremos mais adiante.