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?


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";

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.


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"

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.


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";

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');

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

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;

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.


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

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


"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 .


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."";

$ foo = 5; $ foo = "$ foo" extremamente útil para memória no uso do PHP ''.
Arthur Kushman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.