Convertendo um número inteiro em uma string no PHP

501

Existe uma maneira de converter um número inteiro em uma string no PHP?

kman99
fonte
8
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";
Chris Thompson
fonte
2
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.
Danielson317 26/10/18
86

Há muitas maneiras de fazer isso.

Dois exemplos:

 $str = (string) $int;
 $str = "$int";     

Veja o Manual do PHP sobre Tipos de Malabarismo para mais.

Sanjay Sheth
fonte
25
@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:

$foo = 5;
$foo = (string)$foo;

Outra maneira é encapsular entre aspas:

$foo = 5;
$foo = "$foo"
Sev
fonte
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.

Alan Storm
fonte
9

Todas essas respostas são ótimas, mas todas retornam uma string vazia se o valor for zero.

Tente o seguinte:

    $v = 0;

    $s = (string)$v ? (string)$v : "0";
Microprocessador Cat
fonte
2
Observe que a pergunta diz especificamente 'converter um número inteiro', não um float. :)
Microprocessador Cat
1
Corrija o erro, por favor. O formato correto deve ser: $ s = (string) $ v? (string) $ v: "0";
nintyfan
7

Usar:

$intValue = 1;
$string = sprintf('%d', $intValue);

Ou pode ser:

$string = (string)$intValue;

Ou:

settype(&$intValue, 'string');
gewel
fonte
4

Existem várias formas de conversão possíveis:

$input => 123
sprintf('%d',$input) => 123
(string)$input => 123
strval($input) => 123
settype($input, "string") => 123
Usersbs
fonte
4

Você pode usar o operador de período e concatenar uma string para ele (e será do tipo convertido em uma string):

$integer = 93;
$stringedInt = $integer . "";

Ou, mais corretamente, você pode apenas digitar converter o número inteiro em uma string:

$integer = 93;
$stringedInt = (string) $integer;
Andrew Dunkman
fonte
0

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.

Troelskn
fonte
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.
Elzo Valugi
0

Você pode simplesmente usar o seguinte:

$intVal = 5;
$strVal = trim($intVal);
Imam
fonte
0

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 :)

merkuro
fonte
"na maioria dos casos PHP vai decidir o que é bom para você" incrível:,)
itsjavi
0
$amount = 2351.25;
$str_amount = "2351.25";

$strCorrectAmount = "$amount";
echo gettype($strCorrectAmount);    //string

Portanto, o eco será uma string de retorno .

Kaushik shrimali
fonte
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
Kaushik shrimali
-4
$integer = 93;
$stringedInt = $integer.'';

é mais rápido que

$integer = 93;
$stringedInt = $integer."";
Arthur Kushman
fonte
$ foo = 5; $ foo = "$ foo" extremamente útil para memória no uso do PHP ''.
Arthur Kushman