Iniciante php PHP 15 min de leitura

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 (&&) e OR (||).
  • O Operador Ternário: Usado para atribuições condicionais concisas.
  • Instruções Condicionais: Como instruções if e instruções switch.

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.