operadores - php ternary




Referência-O que esse símbolo significa em PHP? (12)

Operador bit a bit

O que é um pouco? Um bit é uma representação de 1 ou 0. Basicamente OFF (0) e ON (1)

O que é um byte? Um byte é composto de 8 bits e o maior valor de um byte é 255, o que significa que cada bit é definido. Vamos ver por que o valor máximo de um byte é 255.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------

Esta representação de 1 Byte

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 Byte)

Alguns exemplos para melhor compreensão

O operador "AND": &

$a =  9;
$b = 10;
echo $a & $b;

Isso produziria o número 8. Por quê? Bem, vamos ver usando nosso exemplo de tabela.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      &     |   0|  0|  0|  0| 1| 0| 0| 0|
------------------------------------------- 

Então você pode ver na tabela que o único bit que eles compartilham é o 8 bit.

Segundo exemplo

$a =  36;
$b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100
$b = 01100111

Os dois bits compartilhados são 32 e 4, que quando somados retornam 36.

O operador "Ou": |

$a =  9;
$b = 10;
echo $a | $b;

Isso produziria o número 11. Por quê?

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      |     |   0|  0|  0|  0| 1| 0| 1| 1|
-------------------------------------------

Você notará que temos 3 bits definidos nas colunas 8, 2 e 1. Some isso: 8 + 2 + 1 = 11.

O que é isso?

Esta é uma coleção de perguntas que surgem de vez em quando sobre a sintaxe no PHP. Este também é um Wiki da Comunidade, então todos são convidados a participar da manutenção dessa lista.

Por que é isso?

Costumava ser difícil encontrar perguntas sobre operadores e outros tokens de sintaxe.¹
A idéia principal é ter links para as perguntas existentes no Stack Overflow, então é mais fácil para nós referenciá-las, não para copiar o conteúdo do PHP Manual.

¹ Nota: desde janeiro de 2013, o Stack Overflow suporta caracteres especiais . Apenas coloque os termos de pesquisa entre aspas, por exemplo, [php] "==" vs "==="

O que devo fazer aqui?

Se você foi apontado aqui por alguém porque você fez essa pergunta, por favor, encontre a sintaxe específica abaixo. As páginas vinculadas ao manual do PHP, juntamente com as perguntas vinculadas, provavelmente responderão à sua pergunta. Se assim for, você é encorajado a revalorizar a resposta. Esta lista não se destina a substituir a ajuda fornecida por outras pessoas.

A lista

Se o seu token específico não estiver listado abaixo, você poderá encontrá-lo na Lista de tokens do analisador .

& Operadores Bitwise ou References

=& References

Operadores Bitwise

&& Operadores lógicos

% Operadores aritméticos

!! Operadores lógicos

@ Operadores de Controle de Erros

?: Operador Ternário

?? Operador Coalesce Nulo (desde o PHP 7)

: Sintaxe alternativa para estruturas de controle , Operador Ternário

:: Operador de Resolução de Escopo

\ Namespaces

-> Classes e Objetos

=> Arrays

^ Operadores bit a bit

>> Operadores bit a bit

<< Operadores bit a bit

<<< Heredoc ou Nowdoc

= Operadores de atribuição

== Operadores de comparação

=== Operadores de Comparação

!== Operadores de comparação

!= Operadores de comparação

<> Operadores de comparação

<=> Operadores de comparação (desde o PHP 7.0)

  • Operador de espaçonave (comparação de três vias)

| Operadores bit a bit

|| Operadores lógicos

~ Operadores bit ~ bit

+ Operadores Aritméticos , Operadores de Matriz

+= e -= Operadores de atribuição

++ e -- Operadores Incrementadores / Decrementadores

.= Operadores de atribuição

. Operadores de String

, Argumentos de função

, Declarações variáveis

Variáveis ​​variáveis

` Operador de Execução

<?= Short Open Tags

[] Arrays (sintaxe curta desde o PHP 5.4)

<? Abrindo e fechando tags

... Desembalando o argumento (desde o PHP 5.6)

** Exponentiation (desde o PHP 5.6)

# Comentário de estilo de shell de uma linha


Operadores de tipo

instanceof é usado para determinar se uma variável PHP é um objeto instanciado de uma determinada classe.

<?php
class mclass { }
class sclass { }
$a = new mclass;
var_dump($a instanceof mclass);
var_dump($a instanceof sclass);

O exemplo acima irá gerar:

bool(true)
bool(false)

Razão: Acima Exemplo $a é um objeto da mclass então use apenas uma mclass e não uma instância da sclass

Exemplo com herança

<?php 
class pclass { } 
class childclass extends pclass { } 
$a = new childclass; 
var_dump($a instanceof childclass); 
var_dump($a instanceof pclass);

O exemplo acima irá gerar:

bool(true)
bool(true)

Exemplo com Clone

<?php 
class cloneable { } 
$a = new cloneable;
$b = clone $a; 
var_dump($a instanceof cloneable); 
var_dump($b instanceof cloneable);

O exemplo acima irá gerar:

bool(true)
bool(true)

<=> Operador de espaçonave

Adicionado no PHP 7

O operador da espaçonave <=> é o último operador de comparação adicionado no PHP 7. Ele é um operador binário não-associativo com a mesma precedência que os operadores de igualdade ( == != , === !== ). Esse operador permite uma comparação de três vias mais simples entre os operandos esquerdo e direito.

O operador resulta em uma expressão inteira de:

  • 0 quando ambos os operandos são iguais
  • Menos que 0 quando o operando esquerdo for menor que o operando direito
  • Maior que 0 quando o operando esquerdo é maior que o operando direito

por exemplo

1 <=> 1; // 0
1 <=> 2; // -1
2 <=> 1; // 1

Uma boa aplicação prática do uso desse operador seria em retornos de chamada de tipo de comparação que devem retornar um inteiro zero, negativo ou positivo com base em uma comparação de três vias entre dois valores. A função de comparação passada ao usort é um desses exemplos.

Antes do PHP 7 você iria escrever ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    if ($a < $b) {
        return -1;
    } elseif ($a > $b) {
        return 1;
    } else {
        return 0;
    }
});

Desde o PHP 7 você pode escrever ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    return $a <=> $b;
});

Operador de Nave Espacial <=> (Adicionado em PHP 7)

Exemplos para o operador <=> Spaceship (PHP 7, Source: PHP Manual):

Inteiros, Flutuadores, Strings, Arrays e objetos para comparação de variáveis ​​em três direções.

// Integers
echo 10 <=> 10; // 0
echo 10 <=> 20; // -1
echo 20 <=> 10; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1

echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1

// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

// Objects
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 0

$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "c"]; 
echo $a <=> $b; // -1

$a = (object) ["a" => "c"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 1

// only values are compared
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo $a <=> $b; // 1

==é usado para verificar a igualdade sem considerar o tipo de dados variável

===é usado para a igualdade cheque de tanto a variável de valor * e ** tipo de dados

Exemplo

$a = 5

  1. if ($a == 5) - avaliará como verdadeiro

  2. if ($a == '5') - irá avaliar para true, porque ao comparar este valor tanto php internamente converter esse valor de string em inteiro e, em seguida, comparar os dois valores

  3. if ($a === 5) - avaliará como verdadeiro

  4. if ($a === '5') - será avaliado como falso, porque o valor é 5, mas este valor 5 não é um inteiro.



Operadores Incrementing / Decrementing

++ incremento operador

-- operador de decremento

Example    Name              Effect
---------------------------------------------------------------------
++$a       Pre-increment     Increments $a by one, then returns $a.
$a++       Post-increment    Returns $a, then increments $a by one.
--$a       Pre-decrement     Decrements $a by one, then returns $a.
$a--       Post-decrement    Returns $a, then decrements $a by one.

Estes podem ir antes ou depois da variável.

Se colocado antes da variável, a operação de incremento / decremento é feita primeiro para a variável e o resultado é retornado. Se colocar após a variável, a variável é retornada pela primeira vez , então a operação de incremento / decremento é feita.

Por exemplo:

$apples = 10;
for ($i = 0; $i < 10; ++$i) {
    echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}

Exemplo ao vivo

No caso acima, ++$i é usado, pois é mais rápido. $i++ teria os mesmos resultados.

O pré-incremento é um pouco mais rápido porque realmente incrementa a variável e depois disso 'retorna' o resultado. O pós-incremento cria uma variável especial, copia lá o valor da primeira variável e somente depois que a primeira variável é usada, substitui seu valor pelo segundo.

No entanto, você deve usar $apples-- , desde o primeiro, você deseja exibir o número atual de maçãs e, em seguida, você deseja subtrair um dele.

Você também pode incrementar letras no PHP:

$i = "a";
while ($i < "c") {
    echo $i++;
}

Quando z é atingido aa é o próximo e assim por diante.

Note que as variáveis ​​de caracteres podem ser incrementadas, mas não decrementadas e, mesmo assim, somente caracteres ASCII simples (az e AZ) são suportados.

Mensagens de estouro de pilha:


Cadeias PHP: Cadeias PHP podem ser especificadas de quatro maneiras, não apenas de duas maneiras:

1) Cadeias de Citação Única:

$string = 'This is my string'; // print This is my string

2) Cadeias duplas de citação:

$str = 'string';

$string = "This is my $str"; // print This is my string

3) Heredoc:

$string = <<<EOD
This is my string
EOD; // print This is my string

4) Nowdoc (desde o PHP 5.3.0):

$string = <<<'END_OF_STRING'
    This is my string 
END_OF_STRING; // print This is my string

Operador Null Coalesce php

O operador de coalescência nulo (??) foi adicionado ao PHP7 para o caso comum de precisar usar um ternário em conjunto com isset (). Ele retorna seu primeiro operando se existir e não é NULL, caso contrário, retorna seu segundo operando, como no exemplo a seguir:

$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; 

Operador coalescente nulo (??)

Este operador foi adicionado no PHP 7.0 para o caso comum de precisar usar um operador ternário em conjunto com isset() . Retorna seu primeiro operando se existir e não é NULL ; caso contrário, retorna seu segundo operando.

<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>

QUESTÃO:

O que significa => significa?

RESPONDA:

=> É o símbolo que nós, humanos, decidimos usar para separar os pares "Key" => "Value" em Matrizes Associativas.

ELABORANDO:

Para entender isso, precisamos saber quais Matrizes Associativas são. A primeira coisa que surge quando um programador convencional pensa em um array ( em PHP ) seria algo similar a:

$myArray1 = array(2016, "hello", 33);//option 1

$myArray2 = [2016, "hello", 33];//option 2

$myArray3 = [];//option 3
$myArray3[] = 2016; 
$myArray3[] = "hello"; 
$myArray3[] = 33;

Onde como, se quiséssemos chamar o array em alguma parte posterior do código, poderíamos fazer:

echo $myArray1[1];// output: hello
echo $myArray2[1];// output: hello
echo $myArray3[1];// output: hello

Por enquanto, tudo bem. No entanto, como seres humanos, podemos achar difícil lembrar que o índice [0] da matriz é o valor do ano de 2016, o índice [1] da matriz é uma saudação , e o índice [2] da matriz é um simples valor inteiro . A alternativa que teríamos então é usar o que é chamado de Matriz Associativa . Um array associativo tem algumas diferenças de um array sequencial ( que é o que os casos anteriores eram, uma vez que eles incrementam o índice usado em uma sequência predeterminada, incrementando em 1 para cada valor seguinte ).

Diferenças ( entre um array seqüencial e associativo ):

  • Durante a declaração de uma Matriz Associativa, você não apenas inclui o value do que deseja colocar na matriz, mas também coloca o valor do índice (chamado de key ) que você deseja usar ao chamar a matriz em partes posteriores do código. A seguinte sintaxe é usada durante sua declaração: "key" => "value" .

  • Ao usar a Matriz Associativa, o valor da key seria colocado dentro do índice da matriz para recuperar o value desejado.

Por exemplo:

    $myArray1 = array( 
        "Year" => 2016, 
        "Greetings" => "hello", 
        "Integer_value" => 33);//option 1

    $myArray2 = [ 
        "Year" =>  2016, 
        "Greetings" => "hello", 
        "Integer_value" => 33];//option 2

    $myArray3 = [];//option 3
    $myArray3["Year"] = 2016; 
    $myArray3["Greetings"] = "hello"; 
    $myArray3["Integer_value"] = 33;

E agora, para receber a mesma saída de antes, o keyvalor seria usado no índice de matrizes:

echo $myArray1["Greetings"];// output: hello
echo $myArray2["Greetings"];// output: hello
echo $myArray3["Greetings"];// output: hello

PONTO FINAL:

Assim, a partir do exemplo acima, é muito fácil ver que o =>símbolo é usado para expressar o relacionamento de uma Matriz Associativa entre cada um dos pares keye valueem uma matriz DURANTE a iniciação dos valores dentro da matriz.


Syntax    Name             Description

x == y    Equality         True if x and y have the same key/value pairs
x != y    Inequality       True if x is not equal to y
x === y   Identity         True if x and y have the same key/value pairs
                            in the same order and of the same types
x !== y   Non-identity     True if x is not identical to y
++ x      Pre-increment    Increments x by one, then returns x
x ++      Post-increment   Returns x, then increments x by one
-- x      Pre-decrement    Decrements x by one, then returns x
x --      Post-decrement   Returns x, then decrements x by one
x and y   And              True if both x and y are true x=6 y=3
                           (x < 10 and y > 1) returns true 
x && y    And              True if both x and y are true x=6 y=3
                           (x < 10 && y > 1) returns true
a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"




php-5.3