Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

keeperval

resumindo sintaxe

Recommended Posts

como eu posso diminuir a sintaxe desta operação?

 

if (substr($filename,-4) == ".jpg" or substr($filename,-4) == ".jpeg" or substr($filename,-4) == ".gif" or substr($filename,-4) == ".png")

Compartilhar este post


Link para o post
Compartilhar em outros sites


switch(substr($filename,4)

{

case 'jpg':

//comandos

break;

 

case 'jpeg':

//comandos

break;

 

case 'gif':

//comandos

break;

 

case 'png':

//comandos

break;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só uma observação chata: Sintaxe é o conjunto de expressões "gramaticais" de uma linguagem, você não diminui ou aumenta isso alterando código-fonte. O que você quer é simplificar seu código, torná-lo mais elegante ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

dadas as opçoes acima ainda prefira usar o if ai vai uma opção....

if ((substr($filename,-4) == ".jpg") || (substr($filename,-4) == ".jpeg") || (substr($filename,-4) == ".gif") ||(substr($filename,-4) == ".png"))

Compartilhar este post


Link para o post
Compartilhar em outros sites

dadas as opçoes acima ainda prefira usar o if ai vai uma opção....

if ((substr($filename,-4) == ".jpg") || (substr($filename,-4) == ".jpeg") || (substr($filename,-4) == ".gif") ||(substr($filename,-4) == ".png"))

 

Concordo plenamente...

 

Se você está achando muito desorganizado o código, pode quebrar a linha assim:

 

if ((substr($filename,-4) == ".jpg")
|| (substr($filename,-4) == ".jpeg")
|| (substr($filename,-4) == ".gif")
|| (substr($filename,-4) == ".png"))
{

}

 

Eu acho que o if é mais otimizado aí...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em questao de velocidade, o switch eh mais rapido do que uma cadeia de ifs, ou um if com varios OUs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em questao de velocidade, o switch eh mais rapido do que uma cadeia de ifs, ou um if com varios OUs.

 

 

Mas o cara vai ter que ficar repetindo comando em cada caso, isso é ruim, porq imagina q são muitos comandos???? ah não ser q ele faça uma função ali dentro dos casos...

 

Por isso, o if ficaria melhor aí... pq pelo q eu to vendo, o cara só quer validar se oq ta vindo do upload é mesmo uma imagem... é uma validação!!! Não tem pq fazer o switch neste caso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o switch eh mais rapido por causa do break

se for um JPG ele ja para no primeiro case por isso bom colocar tb os mais usados primeiro

 

usando expressao regular nao ficaria mais rapido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o switch eh mais rapido por causa do breakse for um JPG ele ja para no primeiro case por isso bom colocar tb os mais usados primeirousando expressao regular nao ficaria mais rapido?

 

Condições também param se verdadeiras. Se você executar:

 

if ((substr($filename,-4) == ".jpg") || (substr($filename,-4) == ".jpeg") || (substr($filename,-4) == ".gif") ||(substr($filename,-4) == ".png"))

E for um jpg, ele nem tentará as próximas.

 

De qualquer forma, a velocidade é insignificante pra ser percebida... a maneira mais elegante é a do Matias:

 

$array = array('.jpg','.jpeg','.gif','.png');
if (in_array(substr($filename,-4),$array));

Compartilhar este post


Link para o post
Compartilhar em outros sites

Condições também param se verdadeiras. Se você executar:

 

if ((substr($filename,-4) == ".jpg") || (substr($filename,-4) == ".jpeg") || (substr($filename,-4) == ".gif") ||(substr($filename,-4) == ".png"))

É, os caras estão não tão me entendendo, ... para que switch?

 

Utiliza logo o if... oq importa é a performance e simplicidade, não a estética do código... quando a estética, é so tabular bem o código...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

quanto mimimi eh lucasmartins.com.br

eh soh tabular o codigo no switch da msma forma que faria no if

 

:facepalm:

Compartilhar este post


Link para o post
Compartilhar em outros sites

quanto mimimi eh lucasmartins.com.br

eh soh tabular o codigo no switch da msma forma que faria no if

 

:facepalm:

 

Cara, eu acho muito estranho usar switch para validar... mas tudo bem... fazem como quiserem =} estou tentando ajudar...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acredito que a idéia do "dono" do tópico é que se pudesse fazer algo assim...

 

if (substr($filename,-4) == ".jpg" or ".jpeg" or ".gif" or ".png")

Só que isto NÃO FUNCIONA (infelizmente, porque ia facilitar em alguns momentos).

 

Era isto?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

O maior problema é o uso repetido de uma função que retorna o mesmo valor, como ela irá retornar sempre o mesmo valor o uso dessa forma só irá trazer perda de desempenho, se o resultado dela será SEMPRE o mesmo, então o ideal é guardar o valor:

 

if ( ( ( $ext = substr($filename,-4) ) == '.jpg' ) || ( $ext == '.jpeg' ) || ( $ext == '.gif' ) || ( $ext == '.png' ) ){
echo 'ok';
} else echo 'Não sei q arquivo é esse';

 

De qualquer forma, esse método não irá funcionar (não por termos guardado o valor da variável) mas porque, apesar de (.jpg, .gif, .png) terem todos 4 caracteres, .jpeg tem 5 e como foi definido no substr para pegar apenas os 4 últimos, ela irá falhar sempre para essa extensão. Um outro problema desse método é que o usuário pode enviar um arquivo com a extensão maiúscula (ex: .JPG, .PNG, .GIF) e a não ser que você tenha ifs para todas as situações ou então converta o nome do arquivo para minúsculas antes da verificação, esse método irá falhar também.

 

1a. Sugestão

if ( ( ( $ext = strtolower(end(explode('.',$filename))) ) == 'jpg' ) || ( $ext == 'jpeg' ) || ( $ext == 'gif' ) || ( $ext == 'png' ) ){
echo 'ok';
} else echo 'Não sei q arquivo é esse';

 

2a. Sugestão

if ( preg_match( '/\.(?:jp(e)?g|gif|png)/i' , $filename ) ){
echo 'ok';
} else echo 'Não sei q arquivo é esse';

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.