Czy istnieje sposób na konwersję liczby całkowitej na ciąg znaków w PHP?
strval()
nie zmienia też $variable
wewnętrznie.
Czy istnieje sposób na konwersję liczby całkowitej na ciąg znaków w PHP?
strval()
nie zmienia też $variable
wewnętrznie.
Odpowiedzi:
Możesz użyć tej strval()
funkcji do konwersji liczby na ciąg.
Z punktu widzenia konserwacji oczywiste jest, co próbujesz zrobić, a nie inne, bardziej ezoteryczne odpowiedzi. Oczywiście zależy to od kontekstu.
$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)
zwraca 1
.
Można to zrobić na wiele sposobów.
Dwa przykłady:
$str = (string) $int;
$str = "$int";
Więcej informacji znajduje się w podręczniku PHP na temat żonglowania typami .
0
na ""
może nie być zła; to naprawdę zależy od aplikacji. To powiedziawszy, masz rację.
$foo = 5;
$foo = $foo . "";
Teraz $foo
jest ciąg.
Ale możesz przyzwyczaić się do castingu. Ponieważ casting jest właściwym sposobem na osiągnięcie czegoś takiego:
$foo = 5;
$foo = (string)$foo;
Innym sposobem jest umieszczenie w cudzysłowie:
$foo = 5;
$foo = "$foo"
Istnieje wiele sposobów „konwersji” liczby całkowitej na ciąg znaków w PHP.
Tradycyjnym sposobem informatyki byłoby rzutowanie zmiennej jako ciąg znaków:
$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";
Możesz także skorzystać z niejawnej konwersji typu i interpolacji ciągów 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";
Wreszcie, podobnie jak powyżej, dowolna funkcja, która akceptuje i zwraca ciąg znaków, może być użyta do konwersji i liczby całkowitej. Rozważ następujące:
$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";
Nie poleciłbym tej ostatniej opcji, ale widziałem na dziko kod, który polegał na tym zachowaniu, więc pomyślałem, że przekażę go dalej.
Wszystkie te odpowiedzi są świetne, ale wszystkie zwracają ci pusty ciąg znaków, jeśli wartość wynosi zero.
Spróbuj wykonać następujące czynności:
$v = 0;
$s = (string)$v ? (string)$v : "0";
Możesz użyć operatora kropki i połączyć z nim ciąg (i zostanie on rzutowany na ciąg):
$integer = 93;
$stringedInt = $integer . "";
Lub, mówiąc dokładniej, możesz po prostu rzucić liczbę całkowitą na ciąg:
$integer = 93;
$stringedInt = (string) $integer;
Jak tu dobrze pokazują odpowiedzi, tak, istnieje kilka sposobów. Jednak w PHP rzadko trzeba to robić. „Dogmatycznym sposobem” pisania PHP jest poleganie na luźnym systemie pisania w języku, który w razie potrzeby przejrzyście wymusza ten typ. W przypadku wartości całkowitych jest to zwykle bezproblemowe. Powinieneś jednak bardzo uważać na wartości zmiennoprzecinkowe.
strlen(12345);
ale nie w przypadku $x = 12345; echo $x[2];
Wszystkie te funkcje rzutowania są dość przydatne, a wielu programistów coraz częściej sprawdza ich typy.
Powiedziałbym, że to zależy od kontekstu. można użyć strval () lub operatora rzutowania (string). Jednak w większości przypadków PHP zdecyduje, co jest dla Ciebie dobre, jeśli na przykład użyjesz go z echo lub printf ...
Jedna mała uwaga: die () potrzebuje łańcucha i nie pokaże żadnej int :)
$amount = 2351.25;
$str_amount = "2351.25";
$strCorrectAmount = "$amount";
echo gettype($strCorrectAmount); //string
Więc echo będzie powrót ciąg .
$integer = 93;
$stringedInt = $integer.'';
jest szybszy niż
$integer = 93;
$stringedInt = $integer."";
echo
(używane w tak zwanym kontekście łańcucha ).