Łańcuch w PHP to tekst w pojedynczych lub podwójnych cudzysłowach. Łańcuchy łączysz operatorem kropki, $first . ' ' . $last, albo wstawiasz zmienną prosto w podwójne cudzysłowy: "Hello, $name".
Kropka łączy dowolne dwie wartości w nowy łańcuch. Liczby są konwertowane automatycznie, więc "Total: " . 42 daje "Total: 42".
Pojedyncze vs podwójne cudzysłowy
Podwójne cudzysłowy robią dwie dodatkowe rzeczy: zastępują zmienne ich wartościami i zamieniają sekwencje ucieczki, takie jak \n (nowa linia) i \t (tabulator), na odpowiadające im znaki. Pojedyncze cudzysłowy wypisują tekst dokładnie tak, jak jest zapisany, z wyjątkiem \' i \\.
Używaj pojedynczych cudzysłowów do stałego tekstu, a podwójnych, gdy w środku ma być zmienna albo \n. Różnica w szybkości jest zbyt mała, by ją zmierzyć, więc wybierz to, co sprawia, że linia jest czytelniejsza.
Łączenie łańcuchów przez . i .=
.= dopisuje na koniec zmiennej łańcuchowej. To typowy sposób budowania tekstu w pętli, na przykład fragmentu HTML. Uruchom ten blok, a edytor otworzy kartę Page z wyrenderowaną listą.
Kolejność działań ma znaczenie, gdy mieszasz . z arytmetyką. Od PHP 8 + i - wiążą silniej niż ., więc "Sum: " . 2 + 3 daje "Sum: 5". Nawiasy sprawiają, że następny czytelnik nie ma wątpliwości: "Sum: " . (2 + 3).
Zmienne, tablice i obiekty wewnątrz łańcucha
Zwykła zmienna działa w podwójnych cudzysłowach sama. Dla elementu tablicy, łańcucha właściwości obiektu albo wywołania metody obejmij wyrażenie nawiasami klamrowymi. Nawiasy oddzielają też zmienną od liter, które następują zaraz po niej.
Metody działają w nawiasach, zwykłe funkcje nie: ostatnia linia wypisuje nawiasy i nazwę funkcji wokół wartości $fruit. Wywołaj funkcję przed łańcuchem albo użyj sprintf, gdy łańcuch ma wiele wartości.
Zmiana wielkości liter: strtoupper, strtolower, ucfirst, ucwords
Te funkcje działają bajt po bajcie i zmieniają tylko litery od a do z. Dla tekstu z akcentami, cyrylicą albo greką użyj wersji wielobajtowych, które rozumieją UTF-8:
Odczyt pojedynczych znaków i powtarzanie łańcuchów
Łańcuch można indeksować jak tablicę. Ujemne przesunięcia liczą się od końca. Liczenie znaków opisuje strona o strlen.
Częsty błąd: + zamiast .
W JavaScripcie + łączy łańcuchy. W PHP + to zawsze arytmetyka: łańcuchy liczbowe są dodawane jak liczby, a tekst, który nie jest liczbą, rzuca błąd.
Jeśli widzisz liczbę tam, gdzie spodziewałeś się połączonego tekstu, albo Unsupported operand types: string + string, poszukaj +, który powinien być ..
Najczęściej zadawane pytania
Jak połączyć łańcuchy w PHP?
Użyj operatora kropki: $full = $first . ' ' . $last;. Aby dopisać do istniejącego łańcucha, użyj .=: $html .= '<li>Item</li>';. Operator + służy do liczb, a "Hello" + "World" w PHP 8 rzuca TypeError.
Czym różnią się pojedyncze i podwójne cudzysłowy w PHP?
Podwójne cudzysłowy podstawiają zmienne i sekwencje ucieczki: "Hi $name\n" wypisuje wartość $name i znak nowej linii. Pojedyncze wypisują prawie wszystko tak, jak jest zapisane: 'Hi $name\n' wypisuje znak dolara, nazwę i ukośnik wsteczny z literą n. W pojedynczych cudzysłowach sekwencjami ucieczki są tylko \' i \\.
Jak wstawić wartość z tablicy do łańcucha w PHP?
Obejmij ją nawiasami klamrowymi: "Hello, {$user['name']}". To samo działa dla właściwości obiektów i wywołań metod: "{$user->getName()}". Bez nawiasów "$user[name]" (bez cudzysłowów wokół klucza) też działa dla prostego klucza.
Jak zamienić łańcuch na wielkie lub małe litery w PHP?
strtoupper('php') zwraca PHP, strtolower('PHP') zwraca php, ucfirst('hello') zmienia pierwszą literę na wielką, a ucwords('hello world') pierwszą literę każdego słowa. Dla tekstu z polskimi znakami lub literami spoza alfabetu łacińskiego użyj mb_strtoupper() i mb_strtolower().