Vectorial Postado Junho 22, 2009 Denunciar Share Postado Junho 22, 2009 (editado) Alguém sabe se o PHP tem um caminho curto para criar variáveis apenas quando não existirem..Mais ou menos como uma variável padrão caso não 'setada'..Minha intenção é subistituir a expressão abaixo por uma mais simples:Assim o sistema só irá ajustar a variável $a caso ela não exista.if (!$a) $a = 2;Outra opção que funciona mas não acho pratica:$a = (!$a ? 2 : $a);Penso em usar alguma coisa como!$a = 2ouif (!$a = 2)Mas nenhuma deu resultado. Ambos 'setam' a variável mesmo quando existente.A intenção é fazer mais ou menos como funciona o valor padrão das variáveis nas funções.function teste($a = 2) { return $a; }echo teste(1); // retorna 1echo teste(); // retorna 2 Editado Junho 22, 2009 por Vectorial Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 22, 2009 Denunciar Share Postado Junho 22, 2009 Para verificar se existe usa o isset. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vectorial Postado Junho 22, 2009 Autor Denunciar Share Postado Junho 22, 2009 A intenção não é identificar se a variável existe ou não..Mas encontrar a expressão mais simples possível para caso a variável não exista. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Junho 22, 2009 Denunciar Share Postado Junho 22, 2009 Como assim ?Não entendi sua dúvidaVocê pode utilizar a função isset para verificar se a variável existe e, se não existir, você atribui um valor a ela Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vectorial Postado Junho 23, 2009 Autor Denunciar Share Postado Junho 23, 2009 O que eu quero é simplificar a função ao máximo..Usar o isset vai deixar a função ainda maior..Quando se tem uma gama grande de variáveis e quer atribuir valores específicos para variáveis que não tem valores..Por exemplo..Caso um usuário não me envie uma DATA, ou segmentos dela, via post o sistema irá usar a data de hoje..No post temos a variável $dia $mes $ano e o codigo para verificar ficaria +ou- assim:if (!$dia) $dia = date("d");if (!$mes) $mes = date("m");if (!$ano) $ano = date("Y");A atribuição de valores "padrões" é uma constante nesse meu sistema e tenho que ficar fazendo essa ferificação muitas vezes.Seria muito mais fácil um código unico que ajuste uma variável apenas se vazia.Exemplo (Esse comando não existe no PHP mas seria uma boa sugestão)!$dia = date("d");!$mes = date("m");!$ano = date("Y");ou $dia != date("d");$mes != date("m");$ano != date("Y");Do mesmo modo poderia ser simplificada a função de aplicação direta.Ex:echo "A data corrente é ".(!$dia ? date("d") : "$dia")."/".(!$mes ? date("m") : "$mes")."/".(!$ano ? date("Y") : "$ano");Acho que não deveria haver a necessidade de repetir a variável no comando.. Nota que tenho que escrever cada variável 2x.Poderia ter um comando como (este exemplo também é HIPOTÉTICO e NÃO funciona):echo "A data corrente é ".($dia || date("d"))."/".($mes || date("m"))."/".($ano || date("Y"));Ou seja.. Ele usa a variável 'OU' um valor pré-ajustado;Se o comando isset tivesse um "ELSE" embutido seria interessante..Hipoteticamente...!isset ($dia,date("d"));!isset ($mes,date("m"));!isset ($ano,date("y"));Sesse caso ele atribuiria o valor caso a variável estivesse vazia..Acredito que o PHP deva ter qualquer coisa semelhante a isso.. ou não?? <_< Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 23, 2009 Denunciar Share Postado Junho 23, 2009 O máximo que você vai diminuir é usando o operador ternário, mas não vai escapar de usar o isset... exemplo:echo (isset($dia))?$dia:date('d'); Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Vectorial
Alguém sabe se o PHP tem um caminho curto para criar variáveis apenas quando não existirem..
Mais ou menos como uma variável padrão caso não 'setada'..
Minha intenção é subistituir a expressão abaixo por uma mais simples:
Assim o sistema só irá ajustar a variável $a caso ela não exista.
if (!$a) $a = 2;
Outra opção que funciona mas não acho pratica:
$a = (!$a ? 2 : $a);
Penso em usar alguma coisa como
!$a = 2
ou
if (!$a = 2)
Mas nenhuma deu resultado. Ambos 'setam' a variável mesmo quando existente.
A intenção é fazer mais ou menos como funciona o valor padrão das variáveis nas funções.
function teste($a = 2) { return $a; }
echo teste(1); // retorna 1
echo teste(); // retorna 2
Editado por VectorialLink para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.