Chuỗi (string) trong PHP là văn bản nằm trong dấu nháy đơn hoặc nháy kép. Nối các chuỗi bằng toán tử dấu chấm, $first . ' ' . $last, hoặc đặt biến thẳng vào trong dấu nháy kép: "Hello, $name".
Dấu chấm nối hai giá trị bất kỳ thành một chuỗi mới. Số được tự động chuyển thành chuỗi, nên "Total: " . 42 là "Total: 42".
Dấu nháy đơn và dấu nháy kép
Dấu nháy kép làm thêm hai việc: thay biến bằng giá trị của nó, và biến các chuỗi thoát như \n (xuống dòng) và \t (tab) thành đúng ký tự mà chúng đại diện. Dấu nháy đơn in văn bản đúng như khi viết, trừ \' và \\.
Dùng dấu nháy đơn cho văn bản cố định và dấu nháy kép khi bạn muốn có biến hoặc \n bên trong. Chênh lệch tốc độ giữa hai loại nhỏ đến mức không đo được, nên hãy chọn cách nào giúp dòng code dễ đọc hơn.
Nối chuỗi bằng . và .=
.= thêm văn bản vào cuối một biến chuỗi. Đây là cách thường dùng để ghép dần văn bản trong vòng lặp, ví dụ một đoạn HTML. Chạy khối này, trình soạn thảo sẽ mở tab Trang và hiển thị danh sách đã được render.
Độ ưu tiên của toán tử rất quan trọng khi bạn trộn . với phép tính số học. Từ PHP 8, + và - được tính trước ., nên "Sum: " . 2 + 3 là "Sum: 5". Thêm dấu ngoặc đơn sẽ giúp người đọc sau dễ hiểu hơn: "Sum: " . (2 + 3).
Đưa biến, mảng và đối tượng vào trong chuỗi
Một biến bình thường đặt thẳng vào dấu nháy kép là chạy. Với phần tử mảng, chuỗi thuộc tính của đối tượng hoặc lời gọi phương thức, hãy bọc biểu thức trong cặp ngoặc nhọn. Ngoặc nhọn cũng tách biến khỏi các chữ cái đứng ngay sau nó.
Phương thức chạy được bên trong ngoặc nhọn, còn hàm thông thường thì không: dòng cuối in ra cặp ngoặc nhọn và tên hàm bao quanh giá trị của $fruit. Hãy gọi hàm trước khi tạo chuỗi, hoặc dùng sprintf khi chuỗi chứa nhiều giá trị.
Đổi chữ hoa, chữ thường: strtoupper, strtolower, ucfirst, ucwords
Các hàm này xử lý từng byte và chỉ đổi các chữ cái từ a đến z. Với chữ có dấu (như tiếng Việt), chữ Kirin hay chữ Hy Lạp, hãy dùng phiên bản multibyte, vốn hiểu được UTF-8:
Đọc từng ký tự và lặp lại chuỗi
Bạn có thể truy cập chuỗi theo chỉ số như một mảng. Chỉ số âm được đếm từ cuối chuỗi. Để đếm số ký tự, xem strlen.
Lỗi thường gặp: dùng + thay cho .
Trong JavaScript, + nối chuỗi. Trong PHP, + luôn là phép cộng số học: chuỗi chứa số được cộng như số, còn văn bản không phải số sẽ ném ra lỗi.
Nếu bạn thấy một con số ở chỗ đáng lẽ phải là văn bản đã nối, hoặc gặp lỗi Unsupported operand types: string + string, hãy tìm dấu + lẽ ra phải là ..
Câu hỏi thường gặp
Làm sao để nối chuỗi trong PHP?
Dùng toán tử dấu chấm: $full = $first . ' ' . $last;. Để thêm vào cuối một chuỗi đã có, dùng .=: $html .= '<li>Item</li>';. Toán tử + dành cho số, và "Hello" + "World" ném ra TypeError trong PHP 8.
Dấu nháy đơn và dấu nháy kép trong PHP khác nhau thế nào?
Dấu nháy kép thay biến và chuỗi thoát (escape sequence) bằng giá trị của chúng: "Hi $name\n" in ra giá trị của $name và một dấu xuống dòng. Dấu nháy đơn in gần như mọi thứ đúng như khi viết: 'Hi $name\n' in ra dấu đô la, tên biến và một dấu gạch chéo ngược theo sau là n. Bên trong dấu nháy đơn, chỉ \' và \\ là chuỗi thoát.
Làm sao để đưa giá trị của mảng vào trong chuỗi PHP?
Bọc nó trong cặp ngoặc nhọn: "Hello, {$user['name']}". Cách này cũng dùng được cho thuộc tính của đối tượng và lời gọi phương thức: "{$user->getName()}". Không có ngoặc nhọn, "$user[name]" (không có dấu nháy quanh khóa) cũng chạy được với khóa đơn giản.
Làm sao để chuyển chuỗi thành chữ hoa hoặc chữ thường trong PHP?
strtoupper('php') trả về PHP, strtolower('PHP') trả về php, ucfirst('hello') viết hoa chữ cái đầu tiên và ucwords('hello world') viết hoa chữ cái đầu của mỗi từ. Với chữ có dấu như tiếng Việt hoặc chữ không thuộc bảng chữ Latin, dùng mb_strtoupper() và mb_strtolower().