C'è un modo per convertire un numero intero in una stringa in PHP?
strval()
non cambia $variable
neanche internamente.
C'è un modo per convertire un numero intero in una stringa in PHP?
strval()
non cambia $variable
neanche internamente.
Risposte:
È possibile utilizzare la strval()
funzione 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";
strval(0.999999997)
restituisce 1
.
Ci sono molti modi per farlo.
Due esempi:
$str = (string) $int;
$str = "$int";
Per ulteriori informazioni, consultare il Manuale PHP sui tipi di giocoleria .
0
in ""
potrebbe non essere male; dipende davvero dall'applicazione. Detto questo, hai ragione.
$foo = 5;
$foo = $foo . "";
Adesso $foo
è una stringa.
Ma potresti voler abituarti al casting. Poiché il casting è il modo corretto di realizzare qualcosa del genere:
$foo = 5;
$foo = (string)$foo;
Un altro modo è incapsulare tra virgolette:
$foo = 5;
$foo = "$foo"
Esistono diversi modi per "convertire" un numero intero in una stringa in PHP.
Il modo tradizionale di informatica sarebbe quello di lanciare la 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";
Puoi anche trarre vantaggio dalla conversione di tipo implicito di PHP e dall'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, analogamente a quanto sopra, qualsiasi funzione che accetta e restituisce una stringa può essere utilizzata per convertire e integer. Considera quanto segue:
$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";
Non consiglierei l'opzione finale, ma ho visto il codice in natura che si basava su questo comportamento, quindi ho pensato di passarlo.
Tutte queste risposte sono ottime, ma tutte ti restituiscono una stringa vuota se il valore è zero.
Prova quanto segue:
$v = 0;
$s = (string)$v ? (string)$v : "0";
Puoi utilizzare l'operatore punto e concatenare una stringa (e verrà digitato come cast su una stringa):
$integer = 93;
$stringedInt = $integer . "";
O, più correttamente, puoi semplicemente digitare cast l'intero in una stringa:
$integer = 93;
$stringedInt = (string) $integer;
Come dimostrano bene le risposte, sì, ci sono diversi modi. Tuttavia, in PHP raramente è necessario farlo. Il "modo dogmatico" per scrivere PHP è fare affidamento sul sistema di digitazione libera della lingua, che forzerà in modo trasparente il tipo secondo necessità. Per i valori interi, questo di solito è senza problemi. Tuttavia, dovresti stare molto attento ai valori in virgola mobile.
strlen(12345);
ma non per $x = 12345; echo $x[2];
Tutte queste funzioni di casting sono abbastanza utili e molti programmatori stanno controllando sempre più i loro tipi.
Direi che dipende dal contesto. strval () o l'operatore di casting (stringa) potrebbe essere utilizzato. Tuttavia, nella maggior parte dei casi PHP deciderà cosa è buono per te se, ad esempio, lo usi con echo o printf ...
Una piccola nota: die () ha bisogno di una stringa e non mostrerà alcun int :)
$amount = 2351.25;
$str_amount = "2351.25";
$strCorrectAmount = "$amount";
echo gettype($strCorrectAmount); //string
Quindi l'eco sarà stringa di ritorno .
$integer = 93;
$stringedInt = $integer.'';
è più veloce di
$integer = 93;
$stringedInt = $integer."";
echo
si utilizza (utilizzato nel cosiddetto contesto stringa ).