O PHP é digitado livremente. O que era um inteiro uma vez, também pode ser uma string, por exemplo, quando você echoo usa (usado no chamado contexto de string ).
hakre
2
@hakre yes php é vagamente digitado e ecoar imprimiria o valor no contexto da string. Mas isso não altera o tipo de dados de uma variável internamente. Portanto, strval ($ variável) está correto.
vivek_23 31/08/2015
@ Livek: strval()não muda $variableinternamente nem.
hakre 31/08/2015
2
Eu quis dizer $ variable = strval ($ variable);
vivek_23
Respostas:
781
Você pode usar a strval()função para converter um número em uma string.
Do ponto de vista da manutenção, é óbvio o que você está tentando fazer, em vez de outras respostas mais esotéricas. Claro, isso depende do seu contexto.
$var =5;// Inline variable parsing
echo "I'd like {$var} waffles";// = "I'd like 5 waffles// String concatenation
echo "I'd like ".$var." waffles";// I'd like 5 waffles// Explicit cast
$items =(string)$var;// $items === "5";// Function call
$items = strval($var);// $items === "5";
Bom ponto. Eu joguei algumas funções mysql_escape_string lá para limpá-lo.
23410 Chris Thompson
6
editado porque mysql_escape_string está obsoleto porque ignora charset.
Kzqai
7
@Kzqai para qualquer um que olha para este exemplo para tentar evitar ataques de injeção, eu diria que abandonar suas tentativas de escapar strings e usar declarações preparadas
chacham15
22
Após 5 anos, finalmente removi o exemplo do SQL, pois era desnecessário responder à pergunta e introduzi confusão.
21815 Chris Thompson
3
Atenção!! Se você passar certos números, o php os arredondará ao converter para string: strval(0.999999997)retorna 1.
@Jazzerus Se $ var for igual a 0 (zero), isso se tornará uma string vazia. Problemático.
Simon Forsberg
5
Converter 0para ""pode não ser ruim; realmente depende da aplicação. Dito isto, você faz um bom argumento.
WNRosenberg
2
$ f = 0; eco "$ f"; funciona bem comigo, o zero permanece zero. Portanto, considero "$ var" uma resposta inteligente / útil. A execução de 9999999 loops (string) leva 0,4046459 ... seg, enquanto "$ var" leva 0,3725229 ... sem diferença.
Melsi
45
$foo =5;
$foo = $foo ."";
Agora $fooé uma string.
Mas você pode se acostumar com a transmissão. Como a transmissão é a maneira correta de realizar algo desse tipo:
Tão incrivelmente estranho que nós dois escolhemos 5. Além disso, + é java.
karim79
Eu acho que você está misturando sua sintaxe de concatenação entre idiomas.
jason
6
Eu me inclinaria para o elenco, simplesmente porque deixa suas intenções muito claras. A transmissão tem um e apenas um objetivo: alterar tipos. Os outros exemplos podem quase parecer erros, em alguns contextos.
24540 Frank Farmer
Trabalhou para mim .. thnx muito
zeetit
10
Existem várias maneiras de "converter" um número inteiro em uma string no PHP.
A maneira tradicional de ciência da computação seria converter a variável como uma string:
$int =5;
$int_as_string =(string) $int;
echo $int .' is a '. gettype($int)."\n";
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
Você também pode aproveitar a conversão implícita de tipos e a interpolação de strings do PHP:
$int =5;
echo $int .' is a '. gettype($int)."\n";
$int_as_string ="$int";
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
$string_int = $int.'';
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
Finalmente, semelhante ao acima, qualquer função que aceite e retorne uma string pode ser usada para converter e inteiro. Considere o seguinte:
$int =5;
echo $int .' is a '. gettype($int)."\n";
$int_as_string = trim($int);
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
Eu não recomendaria a opção final, mas já vi código que dependia desse comportamento, então pensei em repassá-lo.
Como as respostas aqui demonstram bem, sim, existem várias maneiras. No entanto, no PHP, você raramente precisa fazer isso. A "maneira dogmática" de escrever PHP é confiar no sistema de digitação flexível da linguagem, que coagirá o tipo de forma transparente conforme necessário. Para valores inteiros, isso geralmente é sem problemas. Você deve ter muito cuidado com os valores de ponto flutuante.
Eu não acho que o PHP coagirá um número inteiro a string o tempo todo. Ele fará isso por, strlen(12345);mas não por $x = 12345; echo $x[2];Todas essas funções de conversão são bastante úteis e muitos programadores estão verificando seus tipos cada vez mais.
Eu diria que depende do contexto. strval () ou o operador de conversão (string) pode ser usado. No entanto, na maioria dos casos, o PHP decidirá o que é bom para você se, por exemplo, você o usar com echo ou printf ...
Uma pequena observação: die () precisa de uma string e não mostra nenhum int :)
Re " string ": literalmente ou o tipo? Ou alguma outra coisa? Você pode deixar mais claro ( editando sua resposta )?
Peter Mortensen
Obrigado pelo comentário @ Peter Mortensen Esse é o tipo de retorno "STRING" significa que seu valor deve ser convertido como uma string em uma nova variável. é por isso que eu editei string
echo
o usa (usado no chamado contexto de string ).strval()
não muda$variable
internamente nem.Respostas:
Você pode usar a
strval()
função para converter um número em uma string.Do ponto de vista da manutenção, é óbvio o que você está tentando fazer, em vez de outras respostas mais esotéricas. Claro, isso depende do seu contexto.
fonte
strval(0.999999997)
retorna1
.Há muitas maneiras de fazer isso.
Dois exemplos:
Veja o Manual do PHP sobre Tipos de Malabarismo para mais.
fonte
0
para""
pode não ser ruim; realmente depende da aplicação. Dito isto, você faz um bom argumento.Agora
$foo
é uma string.Mas você pode se acostumar com a transmissão. Como a transmissão é a maneira correta de realizar algo desse tipo:
Outra maneira é encapsular entre aspas:
fonte
Existem várias maneiras de "converter" um número inteiro em uma string no PHP.
A maneira tradicional de ciência da computação seria converter a variável como uma string:
Você também pode aproveitar a conversão implícita de tipos e a interpolação de strings do PHP:
Finalmente, semelhante ao acima, qualquer função que aceite e retorne uma string pode ser usada para converter e inteiro. Considere o seguinte:
Eu não recomendaria a opção final, mas já vi código que dependia desse comportamento, então pensei em repassá-lo.
fonte
Todas essas respostas são ótimas, mas todas retornam uma string vazia se o valor for zero.
Tente o seguinte:
fonte
Usar:
Ou pode ser:
Ou:
fonte
Existem várias formas de conversão possíveis:
fonte
Você pode usar o operador de período e concatenar uma string para ele (e será do tipo convertido em uma string):
Ou, mais corretamente, você pode apenas digitar converter o número inteiro em uma string:
fonte
Como as respostas aqui demonstram bem, sim, existem várias maneiras. No entanto, no PHP, você raramente precisa fazer isso. A "maneira dogmática" de escrever PHP é confiar no sistema de digitação flexível da linguagem, que coagirá o tipo de forma transparente conforme necessário. Para valores inteiros, isso geralmente é sem problemas. Você deve ter muito cuidado com os valores de ponto flutuante.
fonte
strlen(12345);
mas não por$x = 12345; echo $x[2];
Todas essas funções de conversão são bastante úteis e muitos programadores estão verificando seus tipos cada vez mais.Você pode simplesmente usar o seguinte:
fonte
Eu diria que depende do contexto. strval () ou o operador de conversão (string) pode ser usado. No entanto, na maioria dos casos, o PHP decidirá o que é bom para você se, por exemplo, você o usar com echo ou printf ...
Uma pequena observação: die () precisa de uma string e não mostra nenhum int :)
fonte
Portanto, o eco será uma string de retorno .
fonte
é mais rápido que
fonte