# PHP para Iniciantes: Estruturas de Controle - BREAK

Tão agressivo quanto sugerido, **break** é uma instrução que serve para *quebrar* **alguma coisa**. Na verdade, sua semântica não é exatamente uma *quebra*, então não associe a tradução literal pois está mais ligada com a tradução **encerrar**.

> Você pode dar algum exemplo do dia a dia, Kiko?

Claro. Lembra do `$parafuso->apertar()`? Quem já montou alguns móveis sabe que, às vezes, um parafuso se perde na entrega. Ou pior: você tem o número exato de parafusos e, por algum motivo, enquanto apertava... O parafuso simplesmente se desmanchou.

Quando esse último caso acontece, você pode até tentar apertar ou verificar se está firme: o problema é que você não tem como averiguar. À princípio, se você programa uma máquina para apertar até quando chegar na fricção considerada "firme", essa situação vai gerar um **loop infinito**. Você precisa ter uma validação que garanta que toda a função de apertar resulte em **sucesso** ou **falha**, onde **desmantelar**, com toda certeza, precisa ser identificada como uma **falha**.

E o que acontece quando uma ação repetitiva encontra uma falha? Bem, você precisa **encerrar o laço**. É para isso que serve o `break`. É outra coisa da programação que você faz sem perceber... Vê como seu cérebro é incrível?

Outra analogia que posso descrever tem um forte potencial de estar no seu dia-a-dia: escrever mensagem para a pessoa errada. Se você percebeu: `break`, para de digitar, interrompe o fluxo todo, volta pra pessoa certa e digita.

Se você não percebeu...
<center>
![Vish...](https://media.giphy.com/media/l3V0slU7u7quJuZ3O/giphy.gif)
(**não faça isso em casa**)
</center>

Enfim, o ponto é que o loop desse exemplo seria o ato de digitar até completar a mensagem. Por algum motivo, você checou com quem estava falando enquanto digitava (mais uma coisa absurda do nosso cérebro) e fez a validação que te força a fazer um `break` em caso de falha.

<small>Ok, eu comparei com a capacidade de processamento dos humanos e sei que não é tão simples assim, a questão é apenas entender a analogia, ok?!</small>

> Ok, Kiko, entendi... Mas como que usa isso?

Primeiramente você precisa saber quais estruturas suportam o uso do `break`. São elas:

- `while`;
- `do-while`;
- `for`;
- `foreach`;
- `switch` (*veremos em um artigo próximo*).

Agora podemos falar sobre como aplicar, que não é tão complicado assim mas pode ser confuso e o motivo é claro: o `break` pode ser usado para encerrar múltiplos fluxos encadeados simultaneamente.

> QUE

Isso significa que sua sintaxe aceita tanto o uso isolado (`break;`) quanto informando a quantidade de laços que devem ser encerrados (`break <número>;`). É pleonasmo usar um comando `break 1`, que equivale a escrever apenas `break`.

## Encerrando somente um fluxo

É só usar o isolado:

```php
<?php

while (true) {
    echo 'Esse comando poderia ser um loop infinito...' . PHP_EOL;
    break;
}
echo 'Se não fosse pelo break';
```

## Encerrando mais de um fluxo

Aí é só informar a quantidade de estruturas que deseja encerrar. Lembrando que só encerra as estruturas onde é aceito, ou seja, se você tentar encerrar dois laços onde só existe um, irá receber erro.

```php
<?php

while (true) {
    echo 'Esse comando poderia ser um loop infinito...' . PHP_EOL;
    while (true) {
        echo 'E esse um loop infinito dentro de um loop infinito' . PHP_EOL;
        break 2;
    }
}
echo 'Se não fosse pelo break';
```

Fácil, não é mesmo? Acho que gastei mais tempo escrevendo analogias do que ensinando, de fato. Hehehe.

Enfim... Curtiu? Comenta e compartilha! No próximo artigo irei falar sobre uma outra estrutura muito útil para laços repetitivos, o `continue`. Você faz ideia de pra que serve? Se não, espera um pouco que jaja eu te digo!

**Inté!!**
