Lógico e Outros Contextos
Contextos Lógicos e Outros
Comparando Valores com o Operador Spaceship
O operador spaceship do PHP (<=>) oferece uma maneira concisa para comparar dois valores e determinar sua ordem relativa. O resultado é um inteiro representando a comparação: -1 se o lado esquerdo é menor que o direito, 1 se é maior e 0 se são iguais. É importante entender que a conversão automática de tipos (ou "type juggling") do PHP pode influenciar esta comparação. Por exemplo, comparar a string "22" com o inteiro 22 resulta em 0 porque o PHP converte a string para um inteiro durante a comparação.
Este operador é particularmente útil quando você precisa ordenar dados, pois algumas funções de ordenação exigem especificamente este resultado -1, 0 ou 1.
Contextos Lógicos e Conversão de Tipo
PHP frequentemente converte valores de diferentes tipos de dados em valores booleanos (true ou false) quando um booleano é esperado. Isso acontece dentro de contextos específicos, incluindo:
- Operadores Lógicos: Ao usar operadores
AND(&&) eOR(||).
- O Operador Ternário: Usado para atribuições condicionais concisas.
- Instruções Condicionais: Como instruções
ife instruçõesswitch.
Vamos explorar estes contextos lógicos com mais detalhes mais tarde. Além dos contextos lógicos, a manipulação de tipos também ocorre em argumentos de função, o que abordaremos em um capítulo posterior. As operações bitwise, outro contexto para a manipulação de tipos, são menos comuns no desenvolvimento web e não são abordadas neste tutorial.
Conversão de Tipo Explícita
Às vezes, você precisa garantir que um valor seja tratado como um tipo de dados específico. Isso é alcançado através da conversão de tipo, que é uma conversão deliberada e explícita, diferenciando-se da manipulação automática de tipos do PHP. Para converter um valor, você coloca o tipo de dados desejado entre parênteses antes do valor ou variável.
Por exemplo, (float)21 força o inteiro 21 a ser tratado como um número de ponto flutuante.
Aqui estão alguns exemplos de conversão de diferentes tipos de dados escalares:
<?php
$age = (int)20.5;
var_dump($age);
$price = (string)9.99;
var_dump($price);
$inventory = (bool)0;
var_dump($inventory);
?>
No primeiro exemplo, (int)20.5 trunca a parte decimal, resultando no inteiro 20. O segundo exemplo converte o número 9.99 para uma string, representada como "9.99". Finalmente, converter 0 para um booleano resulta em false.