PHP jest luźno wpisane. To, co było kiedyś liczbą całkowitą, może również być łańcuchem, np. Kiedy Ty echo(używane w tak zwanym kontekście łańcucha ).
hakre
2
@hakre tak php jest luźno wpisany, a echo wypisuje wartość w kontekście łańcucha. Ale to nie zmienia wewnętrznie typu danych zmiennej. Stąd strval ($ zmienna) jest poprawny.
vivek_23,
@Vivek: strval()nie zmienia też $variablewewnętrznie.
hakre
2
Miałem na myśli $ zmienna = strval ($ zmienna);
vivek_23,
Odpowiedzi:
781
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";
Słuszna uwaga. Wrzuciłem tam kilka funkcji mysql_escape_string, aby go wyczyścić.
Chris Thompson
6
edytowane, ponieważ mysql_escape_string jest przestarzałe, ponieważ ignoruje zestaw znaków.
Kzqai,
7
@Kzqai dla każdego, kto patrzy na ten przykład, aby uniknąć ataków polegających na wstrzyknięciu, powiedziałbym, że należy porzucić próby ucieczki przed ciągami i użyć przygotowanych instrukcji
chacham15
22
Po 5 latach w końcu usunąłem przykład SQL, ponieważ nie było potrzeby odpowiadać na pytanie i wprowadziłem zamieszanie.
Chris Thompson,
3
Ostrzeżenie!! Jeśli podasz określone liczby, php zaokrągli je podczas konwersji na string: strval(0.999999997)zwraca 1.
danielson317,
86
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 .
@Jazzerus Jeśli $ var jest równe 0 (zero), staje się pustym ciągiem. Problematyczny.
Simon Forsberg,
5
Konwersja 0na ""może nie być zła; to naprawdę zależy od aplikacji. To powiedziawszy, masz rację.
WNRosenberg
2
$ f = 0; echo „$ f”; działa dobrze ze mną, zero pozostaje nadal zero. Uważam więc, że „$ var” jest mądrą / przydatną odpowiedzią. Uruchomienie 9999999 pętli (ciąg) zajmuje 0,4046459 ... s, podczas gdy „$ var” zajmuje 0,3725229 ... bez różnicy.
Melsi
45
$foo =5;
$foo = $foo ."";
Teraz $foojest ciąg.
Ale możesz przyzwyczaić się do castingu. Ponieważ casting jest właściwym sposobem na osiągnięcie czegoś takiego:
Tak niesamowicie dziwne, że oboje wybraliśmy 5. + to także java.
karim79
Myślę, że mieszasz tam swoją składnię konkatenacji między językami.
jason
6
Skłoniłbym się do rzucenia, po prostu dlatego, że to wyraźnie wyjaśnia twoje intencje. Przesyłanie ma jeden i tylko jeden cel: zmianę typów. Inne przykłady mogą w niektórych kontekstach wyglądać jak błędy.
Frank Farmer
Pracowałem dla mnie .. bardzo dużo
zeetit
10
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.
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.
Nie sądzę, aby PHP przez cały czas wymuszało zapisanie liczby całkowitej. Będzie to robić, 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 :)
Re „ string ”: dosłownie czy typ? Albo coś innego? Czy możesz to wyjaśnić ( edytując odpowiedź )?
Peter Mortensen
Dzięki za komentarz @ Peter Mortensen To jest typ zwracany „STRING” oznacza, że twoja wartość powinna zostać przekonwertowana jako ciąg znaków w nowej zmiennej. dlatego właśnie edytowałem ciąg
echo
(używane w tak zwanym kontekście łańcucha ).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.
źródło
strval(0.999999997)
zwraca1
.Można to zrobić na wiele sposobów.
Dwa przykłady:
Więcej informacji znajduje się w podręczniku PHP na temat żonglowania typami .
źródło
0
na""
może nie być zła; to naprawdę zależy od aplikacji. To powiedziawszy, masz rację.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:
Innym sposobem jest umieszczenie w cudzysłowie:
źródło
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:
Możesz także skorzystać z niejawnej konwersji typu i interpolacji ciągów PHP:
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:
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.
źródło
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:
źródło
Posługiwać się:
Lub może to być:
Lub:
źródło
Istnieje wiele możliwych sposobów konwersji:
źródło
Możesz użyć operatora kropki i połączyć z nim ciąg (i zostanie on rzutowany na ciąg):
Lub, mówiąc dokładniej, możesz po prostu rzucić liczbę całkowitą na ciąg:
źródło
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.
źródło
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.Możesz po prostu użyć następujących opcji:
źródło
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 :)
źródło
Więc echo będzie powrót ciąg .
źródło
jest szybszy niż
źródło