2009-06-23 13 views
368

C'è un modo per convertire un intero in una stringa in PHP?Conversione di un intero in una stringa in PHP

+7

PHP è liberamente digitato. Che cosa era un numero intero una volta, può essere anche una stringa, ad es. quando ti "echo" (usato nel cosiddetto * contesto delle stringhe *). – hakre

+2

@hakre yes php è tipicamente digitato e l'echoing stamperebbe il valore nel contesto di stringa. Ma questo non cambia il tipo di dati di una variabile internamente. Quindi, lo strval ($ variabile) è corretto. –

+0

@Vivek: 'strval()' non cambia la variabile '$' internamente nène. – hakre

risposta

559

È possibile utilizzare la funzione strval() per convertire un numero in una stringa.

Dal punto di vista della manutenzione è ovvio quello che stai cercando di fare piuttosto che alcune delle altre risposte più esoteriche. Certo, dipende dal tuo contesto.

$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"; 
+26

Si prega di prendere in considerazione la possibilità di ovviare ai potenziali potenziali fori di iniezione SQL ... – gahooa

+2

Buon punto. Ho buttato dentro alcune funzioni mysql_escape_string per pulirlo. –

+6

modificato poiché mysql_escape_string è deprecato poiché ignora il set di caratteri. – Kzqai

35
$foo = 5; 

$foo = $foo . ""; 

ora $foo è una stringa.

Ma potresti voler abituarti al casting. Come casting è il modo corretto per realizzare qualcosa del genere.

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

Un altro modo è quello di incapsulare tra virgolette:

$foo = 5; 
$foo = "$foo" 
+0

Così incredibilmente strano che entrambi abbiamo scelto 5. Inoltre, + è java. – karim79

+0

Wow. Concordato. E grazie;) – Sev

+0

Penso che stai mescolando la tua sintassi di concatenazione tra le lingue lì. – jason

75

Ci sono molti modi per farlo.

due esempi:

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

Vedere il Manuale PHP su Types Juggling di più.

+10

+1: '$ str =" $ var ";' è il mio modo preferito di trasmettere le stringhe. – Jazzerus

+21

@Jazzerus Se $ var è uguale a 0 (zero), diventa una stringa vuota. Problematico. –

+4

Conversione da '0' a' "" 'potrebbe non essere negativo; dipende davvero dall'applicazione. Detto questo, sei un buon punto. – Jazzerus

3

È possibile utilizzare l'operatore periodo e concatenare una stringa ad esso (e sarà di tipo pressofuso in una stringa):

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

o, più correttamente, si può semplicemente digitare lanciare il numero intero a un stringa:

$integer = 93; 
$stringedInt = (string) $integer; 
0

Direi che dipende dal contesto. strval() o l'operatore di casting (stringa) potrebbe essere utilizzato, tuttavia nella maggior parte dei casi PHP deciderà cosa è giusto per te, se ad esempio lo usi con echo o printf ... Una piccola nota: die() richiede una stringa e non mostrerà alcun int :)

+0

"nella maggior parte dei casi PHP deciderà cosa ti fa bene" incredibile:,) – itsjavi

8

Ci sono diversi modi per "convertire" un intero in una stringa in PHP.

Il modo tradizionale CS sarebbe cast della variabile come una stringa

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

Si potrebbe anche trarre vantaggio di PHP tipo implicito conversione e interpolazione di stringhe

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

Infine, simile al precedente , qualsiasi funzione che accetta e restituisce una stringa può essere utilizzata per convertire e numero intero. Si consideri il seguente

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

io non consiglierei l'opzione finale, ma ho visto il codice in natura che si basava su questo comportamento, così ho pensato di passarlo insieme.

0

Come le risposte qui dimostrano bene, sì, ci sono diversi modi. Tuttavia, in PHP raramente hai effettivamente bisogno di farlo. Il "modo dogmatico" per scrivere PHP è fare affidamento sul sistema di digitazione libera del linguaggio, che costringerà il tipo in modo trasparente secondo necessità. Per i valori interi, di solito questo è senza problemi.Dovresti stare molto attento con i valori in virgola mobile, comunque.

+0

Non credo che PHP costringerà un intero a stringere tutto il tempo. Lo farà per 'strlen (12345);' ma non per '$ x = 12345; echo $ x [2]; 'Tutte queste funzioni di casting sono abbastanza utili e molti programmatori stanno controllando i loro tipi sempre di più. –

-4
$integer = 93; 
$stringedInt = $integer.''; 

è più veloce di

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

$ foo = 5; $ foo = "$ foo" estremamente a vita per la memoria in uso PHP ''. –

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

o potrebbe essere:

$string = (string)$intValue ; 

o:

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

Ci sono molte possibili conv ersioni:

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

Tutte queste risposte sono ottime, ma tutte restituiscono una stringa vuota se il valore è zero.

provare quanto segue:

$v = 0; 

$s = (string)$v : (string)$v ? "0"; 
+2

Si noti che la domanda specifica "conversione di un numero intero", non di un valore float. :) –

0

si può semplicemente utilizzare il seguente:

$intVal = 5; 
$strVal = trim($intVal); 
Problemi correlati