PHP đặt biến thành chuỗi

Các biến được sử dụng để lưu trữ dữ liệu, như chuỗi văn bản, số, v.v. Các giá trị biến có thể thay đổi trong suốt quá trình của tập lệnh. Dưới đây là một số điều quan trọng cần biết về các biến

  • Trong PHP, một biến không cần khai báo trước khi thêm giá trị cho nó. PHP tự động chuyển đổi biến thành kiểu dữ liệu chính xác, tùy thuộc vào giá trị của nó
  • Sau khi khai báo một biến, nó có thể được sử dụng lại trong toàn bộ mã
  • Toán tử gán (=) dùng để gán giá trị cho một biến

Trong biến PHP có thể được khai báo là. $var_name = value;

Trong ví dụ trên, chúng tôi đã tạo hai biến trong đó biến đầu tiên được gán với giá trị chuỗi và biến thứ hai được gán với một số. Sau đó, chúng tôi đã hiển thị các giá trị biến trong trình duyệt bằng cách sử dụng câu lệnh echo. Câu lệnh PHP echo thường dùng để xuất dữ liệu ra trình duyệt. Chúng ta sẽ tìm hiểu thêm về điều này trong chương tiếp theo

Quy ước đặt tên cho các biến PHP

Đây là các quy tắc sau để đặt tên cho một biến PHP

  • Tất cả các biến trong PHP đều bắt đầu bằng dấu $, theo sau là tên của biến
  • Tên biến phải bắt đầu bằng một chữ cái hoặc ký tự gạch dưới _
  • Tên biến không được bắt đầu bằng số
  • Tên biến trong PHP chỉ có thể chứa các ký tự chữ và số và    dấu gạch dưới (A-z, 0-9_)
  • Tên biến không được chứa khoảng trắng

Ghi chú. Tên biến trong PHP phân biệt chữ hoa chữ thường, có nghĩa là =0 và =1 là hai biến khác nhau. Vì vậy, hãy cẩn thận trong khi xác định tên biến

Trong PHP, chúng ta có một số tùy chọn để chỉ định chuỗi, nhưng hầu hết chúng ta chỉ quen với việc xác định chuỗi ký tự bằng cách sử dụng dấu ngoặc kép. Đôi khi, những chuỗi này đơn giản và chúng ta có thể sử dụng chúng nguyên trạng, nhưng thường thì chúng ta cần chúng ở dạng động, được kết hợp với các biến khác nhau

Điều quan trọng là phải hiểu rõ về cách bạn có thể kết hợp các chuỗi ký tự với bất kỳ biến nào

Các cách tiếp cận phổ biến nhất để điều chỉnh một chuỗi là sử dụng

  1. Dấu ngoặc đơn có nối,
  2. Dấu ngoặc kép với biến trong chuỗi,
  3. hàm sprintf (vsprintf),
  4. cú pháp heredoc (newdoc)

Chúng tôi sẽ tập trung vào từng tùy chọn, điểm mạnh và điểm yếu của nó. Đầu tiên, hãy đi sâu vào lý thuyết

Học thuyết

# 1 Dấu nháy đơn có dấu nối

Chuỗi trích dẫn đơn không có biến bên trong nó được diễn giải. Không giống như các tùy chọn khác, các biến trong chuỗi trích dẫn đơn sẽ không được mở rộng khi chúng xuất hiện. Điều đó có nghĩa là bạn cần sử dụng nối

'Variable is' . $var; 

#2 Dấu ngoặc kép và biến trong chuỗi

Với dấu ngoặc kép, trình biên dịch PHP sẽ mở rộng mọi biến thoát bên trong một chuỗi ký tự

"Variable is {$var}"; 

#3 Hàm Sprintf (vsprintf)

Sprintf là chức năng định dạng chuỗi PHP mạnh mẽ và tiên tiến nhất, cung cấp cho bạn rất nhiều tùy chọn để kiểm soát kết quả cuối cùng. Nó cho phép bạn định dạng các chuỗi theo một ngôn ngữ tạo khuôn mẫu đặc biệt và dường như là một cách mạnh mẽ hơn nhiều để chèn các biến vào chúng, mặc dù với chi phí thời gian xử lý lớn nhất

Hàm sprintf lấy mẫu chuỗi làm đối số đầu tiên của nó. Theo đó, có thể có vô số đối số. Sprintf sẽ thay thế các trình giữ chỗ bên trong một chuỗi theo các đối số mà bạn đã truyền cho hàm

sprintf('Variable is %s', $var); 

#4 Heredoc (và nowdoc)

Tài liệu ở đây được định nghĩa là một phần của tệp mã nguồn được xử lý như thể đó là một tệp riêng biệt

Cải thiện cú pháp (kể từ PHP 7. 3), giúp chúng tôi sử dụng heredoc theo cách dễ đọc hơn, gọn gàng hơn và ít lỗi hơn. Heredoc cho phép bạn làm điều gì đó khó thực hiện hơn với một chuỗi ký tự được trích dẫn. Nó cho phép bạn xác định một khối văn bản theo nghĩa đen

Theo mặc định, PHP sẽ xử lý một heredoc giống như một chuỗi ký tự trích dẫn kép, trong khi nowdoc - một chuỗi trích dẫn đơn. Để sử dụng nowdoc, chúng ta chỉ cần đặt mã định danh mở trong dấu nháy đơn

cú pháp di truyền

$str = <<

cú pháp newdoc

$str = <<<'STR'
Variable is $var
STR;

Luyện tập

Hãy kiểm tra từng phương pháp với một vài ví dụ

Xét đoạn văn sau

Knock knock, "LANG" has you. Wake up NAME, ACTION

#1 Concat

$str = 'Knock knock, "' . $lang . '" has you. Wake up ' . $name . ', ' . $action;

Chúng tôi phải đối phó với một số lượng lớn các dấu ngoặc kép, nối và không gian thừa ở đây

#2 Biến trong chuỗi

________số 8_______

Trông đẹp hơn nhiều, chỉ cần nhớ thoát các biến và ký tự đặc biệt (“trong trường hợp này)

#3 Sprintf

$str = sprintf('Knock knock, "%s" has you. Wake up %s, %s', $lang, $name, $action);

Trông cũng khá dễ đọc, không có lối thoát

Ngoài ra, chúng ta có thể truyền các biến dưới dạng một mảng

$vars = [
 'PHP',
 'Developer',
 'time to code'
];
$str = sprintf('Knock knock, "%s" has you. Wake up %s, %s', ...$vars);

Tương tự nếu chúng ta sử dụng chức năng vsprintf

"Variable is {$var}"; 
0

#4 Heredoc

"Variable is {$var}"; 
1

Không thoát, không nối hoặc thêm dấu ngoặc kép, không cần gọi hàm, nhưng 3 dòng cho một chuỗi đơn giản.  

Giả sử chúng ta muốn thêm một số đánh dấu với các biến động

"Variable is {$var}"; 
2

Chúng tôi khuyên bạn nên sử dụng heredoc tại đây

"Variable is {$var}"; 
3

Trong chuỗi trông tương tự, nhưng chúng tôi cần thêm một chút ký tự thoát '\' và {}

"Variable is {$var}"; 
4

Concating trông khó đọc hơn, nhưng nhờ định dạng nên nó không gây khó chịu. Nhưng đó không phải là vấn đề chính ở đây

"Variable is {$var}"; 
5

Imagine we want to add a new dynamic variable to

tag, in heredoc syntax:

"Variable is {$var}"; 
6

hoặc trong trích dẫn kép

"Variable is {$var}"; 
7

Trong khi đối với một trường hợp được trích dẫn duy nhất, chúng tôi cần tìm đúng chỗ trước khi thêm các từ nối và trích dẫn khác. Rất dễ phạm sai lầm

"Variable is {$var}"; 
8

Và những gì về sprintf

"Variable is {$var}"; 
9

Truyền một chuỗi nhiều dòng có vẻ không hay lắm, trừ khi bạn muốn gán nó cho một biến nào đó trước.  

Ngoài ra, hãy nhớ giữ số lượng chỗ dành sẵn có thể thay đổi ở mức thấp. Nếu không, bạn sẽ gặp cơn ác mộng bảo trì với hơn 10 tham số, cố gắng thêm %s mới, tìm vị trí trong danh sách tham số và thêm nó vào lệnh gọi sprintf.  

Trong ví dụ trên, nếu chúng ta muốn thêm một biến mới

sprintf('Variable is %s', $var); 
0

ngay sau line-height, chúng ta cần tìm ra rằng đó là tham số thứ ba và liệt kê nó dưới dạng đối số giữa $size và $text1. Nghe không hay
Trong trường hợp này, bạn có thể thử chơi với các trình giữ chỗ được sắp xếp như %1$s, %2$s, ngoài ra, các trình giữ chỗ đó có thể được lặp lại mà không cần thêm nhiều đối số hơn trong mã

sprintf('Variable is %s', $var); 
1

So sánh hiệu suất

Thiết lập ban đầu cho thử nghiệm của chúng tôi

  • PHP7. 3
  • Số lần lặp - 5. 000. 000
  • Trường hợp đơn giản là Knock knock, $lang có bạn
  • Phức tạp là Knock knock, "$lang" có bạn. Thức dậy $name, $action

Kết quả

Trích dẫn đơn Trích dẫn képSprintfSprintf (alt)Heredoctrường hợp đơn giản, ms275259533572260trường hợp phức tạp, ms685479935888487

PHP đặt biến thành chuỗi

thần thoại. Sử dụng “ nhanh hơn ‘. PHP sẽ không sử dụng xử lý bổ sung để diễn giải nội dung bên trong dấu ngoặc đơn, trong khi bên trong dấu ngoặc kép PHP phải phân tích cú pháp và kiểm tra xem có bất kỳ biến nào không

Ngày nay, lập luận rằng cái này hoạt động tốt hơn cái kia không còn nước, trừ khi bạn bắt đầu kết hợp chuỗi với các biến, thì phương pháp dấu ngoặc kép chắc chắn là người chiến thắng ở đây

Tóm lược

Chúng tôi nhận thấy tùy chọn trong chuỗi là phương pháp hữu dụng nhất để kết hợp chuỗi và biến. Nhưng lời khuyên chung là sử dụng từng phương pháp cho một tình huống nhất định.  

Dưới đây là các khuyến nghị cho từng phương pháp

  1. Sử dụng dấu nháy đơn theo mặc định trừ khi bạn cần sử dụng biến trong chuỗi. Nếu không, bạn sẽ gặp rắc rối trong việc bảo trì, tăng dần theo độ phức tạp của các chuỗi, bởi vì bạn phải xử lý một số lượng lớn các dấu ngoặc kép, phép nối và khoảng trắng thừa. Điều tương tự cũng xảy ra với hiệu suất, chuỗi có nhiều cách nối hơn sẽ kém hiệu quả hơn so với #2 và #3
  2. Các chuỗi trích dẫn kép thanh lịch hơn vì bạn không phải ngắt chuỗi của mình mỗi khi cần chèn một biến (giống như bạn phải làm với các chuỗi trích dẫn đơn). Kết quả là, việc viết và đọc các chuỗi như vậy sẽ dễ dàng hơn. Ngoài ra, đây là một trong những cách tiếp cận nhanh nhất, đặc biệt là trong các tình huống khó khăn
  3. Heredoc hoạt động giống như một chuỗi trích dẫn kép, đây cũng có thể là tùy chọn dành cho bạn. Cả hai cú pháp heredoc và nowdoc đều rất hữu ích khi chúng ta muốn xác định một chuỗi nhiều dòng. Hiệu suất ngang với #2
  4. Tùy chọn linh hoạt và mạnh mẽ nhất là sprintf, nhưng cũng là tùy chọn chậm nhất. Bạn có thể sử dụng nó, nhưng đối với các chuỗi ngắn hơn, vì việc sử dụng giải pháp này trở nên khá khó khăn sau 4-5 biến. Hãy nhớ rằng bạn có thể làm được nhiều việc hơn là chỉ chèn các giá trị biến vào chuỗi, ví dụ: chỉ định định dạng số (hex, thập phân, bát phân), số thập phân, đệm và nhiều hơn nữa

Tại Droptica, chúng tôi đã cung cấp dịch vụ phát triển PHP trong hơn 10 năm. Văn bản này là kết quả của kinh nghiệm thu được. Vì vậy, nếu bạn có một dự án yêu cầu kiến ​​thức chuyên môn về PHP, vui lòng liên hệ với chúng tôi

Làm cách nào để chuyển đổi biến thành chuỗi trong PHP?

PHP. Hàm strval() .

Làm cách nào để đặt loại biến trong PHP?

Quy tắc cho các biến PHP. .
Một biến bắt đầu bằng dấu $, theo sau là tên của biến
Tên biến phải bắt đầu bằng một chữ cái hoặc ký tự gạch dưới
Tên biến không được bắt đầu bằng số
Tên biến chỉ có thể chứa các ký tự chữ và số và dấu gạch dưới (A-z, 0-9 và _ )

Làm cách nào để chuyển đổi số nguyên thành chuỗi trong PHP?

Hàm PHP strval() được sử dụng để chuyển đổi một số nguyên thành một chuỗi trong PHP.

Làm cách nào để đặt giá trị trong biến trong PHP?

Trong PHP, một biến được khai báo bằng dấu $ theo sau là tên biến. .
Vì PHP là ngôn ngữ có kiểu chữ lỏng lẻo nên chúng ta không cần khai báo kiểu dữ liệu của các biến. .
Sau khi khai báo một biến, nó có thể được sử dụng lại trong toàn bộ mã
Toán tử gán (=) được sử dụng để gán giá trị cho một biến