Hướng dẫn how variables are stored in php? - làm thế nào các biến được lưu trữ trong php?


Các biến là "container" để lưu trữ thông tin.


Tạo (khai báo) các biến PHP

Trong PHP, một biến bắt đầu với dấu $, theo sau là tên của biến:

Sau khi thực hiện các câu lệnh trên, biến $txt sẽ giữ giá trị Hello world!, biến $x sẽ giữ giá trị 5 và biến $y sẽ giữ giá trị 10.5.

Lưu ý: Khi bạn gán giá trị văn bản cho một biến, hãy đặt báo giá xung quanh giá trị. When you assign a text value to a variable, put quotes around the value.

Lưu ý: Không giống như các ngôn ngữ lập trình khác, PHP không có lệnh để khai báo một biến. Nó được tạo ra ngay khi bạn đầu tiên gán một giá trị cho nó. Unlike other programming languages, PHP has no command for declaring a variable. It is created the moment you first assign a value to it.

Hãy nghĩ về các biến làm container để lưu trữ dữ liệu.


Biến PHP

Một biến có thể có một tên ngắn (như X và Y) hoặc một tên mô tả hơn (Age, Carname, Total_Volume).

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
  • Một tên biến phải bắt đầu bằng một chữ cái hoặc ký tự dấu gạch dưới
  • Một tên biến không thể bắt đầu với một số
  • Một tên biến chỉ có thể chứa các ký tự alpha-numeric và nhấn mạnh (A-Z, 0-9 và _)
  • Tên biến có tính nhạy cảm trường hợp (
    Static object: NULL
    Static object: NULL
    
    Static object: NULL
    Static object: object(stdClass)#3 (1) {
      ["property"]=>
      int(1)
    }
    
    0 và
    Static object: NULL
    Static object: NULL
    
    Static object: NULL
    Static object: object(stdClass)#3 (1) {
      ["property"]=>
      int(1)
    }
    
    1 là hai biến khác nhau)

Hãy nhớ rằng tên biến PHP là nhạy cảm trường hợp!



Biến đầu ra

Câu lệnh PHP

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
2 thường được sử dụng để xuất dữ liệu vào màn hình.

Ví dụ sau sẽ hiển thị cách xuất văn bản và một biến:

Ví dụ sau đây sẽ tạo ra đầu ra giống như ví dụ trên:

Thí dụ

$txt = "W3Schools.com";
echo "I love " . $txt . "!";
?>

Hãy tự mình thử »

Ví dụ sau sẽ xuất ra tổng của hai biến:

Lưu ý: Bạn sẽ tìm hiểu thêm về câu lệnh

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
2 và cách xuất dữ liệu vào màn hình trong chương tiếp theo. You will learn more about the
Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
2 statement and how to output data to the screen in the next chapter.


PHP là một ngôn ngữ được đánh máy một cách lỏng lẻo

Trong ví dụ trên, lưu ý rằng chúng tôi không phải nói PHP nào loại dữ liệu là biến là.

PHP tự động liên kết một loại dữ liệu với biến, tùy thuộc vào giá trị của nó. Vì các loại dữ liệu không được đặt theo nghĩa nghiêm ngặt, bạn có thể làm những việc như thêm một chuỗi vào một số nguyên mà không gây ra lỗi.

Trong Php 7, khai báo loại đã được thêm vào. Điều này cung cấp một tùy chọn để chỉ định kiểu dữ liệu dự kiến ​​khi khai báo một hàm và bằng cách cho phép yêu cầu nghiêm ngặt, nó sẽ đưa ra "lỗi nghiêm trọng" trên sự không phù hợp loại.

Bạn sẽ tìm hiểu thêm về các yêu cầu

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
4 và
Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
5 và khai báo kiểu dữ liệu trong chương chức năng PHP.




Phạm vi của một biến là bối cảnh trong đó nó được xác định. Đối với hầu hết các phần, tất cả các biến PHP chỉ có một phạm vi duy nhất. Phạm vi duy nhất này bao gồm và các tập tin cần thiết là tốt. Ví dụ:

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
6

Ở đây $ một biến sẽ có sẵn trong tập lệnh B.INC đi kèm. Tuy nhiên, trong các chức năng do người dùng xác định, một phạm vi chức năng cục bộ được giới thiệu. Bất kỳ biến nào được sử dụng bên trong một hàm theo mặc định giới hạn trong phạm vi hàm cục bộ. Ví dụ:

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
7

Tập lệnh này sẽ không tạo ra bất kỳ đầu ra nào vì câu lệnh ECHO đề cập đến phiên bản cục bộ của biến $ A và nó chưa được gán giá trị trong phạm vi này. Bạn có thể nhận thấy rằng điều này hơi khác một chút so với ngôn ngữ C trong các biến toàn cầu trong C được tự động có sẵn cho các chức năng trừ khi cụ thể được ghi đè bởi một định nghĩa cục bộ. Điều này có thể gây ra một số vấn đề ở chỗ mọi người có thể vô tình thay đổi một biến toàn cầu. Trong các biến toàn cầu PHP phải được khai báo toàn cầu bên trong một hàm nếu chúng sẽ được sử dụng trong hàm đó.

Từ khóa Static object: NULL Static object: NULL Static object: NULL Static object: object(stdClass)#3 (1) { ["property"]=> int(1) } 8

Đầu tiên, một ví dụ sử dụng

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
8:

Ví dụ #1 sử dụng

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
8

$1

$2

$3

Tập lệnh trên sẽ xuất ra $4. Bằng cách tuyên bố $ a và $ b toàn cầu trong hàm, tất cả các tham chiếu đến một trong hai biến sẽ đề cập đến phiên bản toàn cầu. Không có giới hạn về số lượng biến toàn cầu có thể được thao tác bởi một hàm.

Cách thứ hai để truy cập các biến từ phạm vi toàn cầu là sử dụng mảng $ Globals được xác định bằng PHP đặc biệt. Ví dụ trước có thể được viết lại như:

Ví dụ #2 sử dụng $ globals thay vì toàn cầu

$1

$2

$7

Mảng $ Globals là một mảng kết hợp với tên của biến toàn cầu là khóa và nội dung của biến đó là giá trị của phần tử mảng. Lưu ý cách $ Globals tồn tại trong bất kỳ phạm vi nào, điều này là do $ Globals là một siêu thị. Đây là một ví dụ chứng minh sức mạnh của Superglobals:

Ví dụ #3 Ví dụ chứng minh Superglobals và Phạm vi

$8

Ghi chú::

Sử dụng từ khóa

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
8 bên ngoài chức năng không phải là lỗi. Nó có thể được sử dụng nếu tệp được bao gồm từ bên trong một hàm.

Sử dụng các biến $txt0

Một tính năng quan trọng khác của phạm vi biến là biến tĩnh. Một biến tĩnh chỉ tồn tại trong phạm vi hàm cục bộ, nhưng nó không mất giá trị khi thực hiện chương trình rời khỏi phạm vi này. Xem xét ví dụ sau:

Ví dụ #4 Ví dụ Thể hiện nhu cầu về các biến tĩnh

$txt1

Hàm này khá vô dụng vì mỗi lần được gọi là đặt $ A thành $txt2 và in $txt2. $ A ++ tăng biến không phục vụ mục đích nào vì ngay khi hàm thoát ra khỏi biến $ A biến mất. Để tạo chức năng đếm hữu ích sẽ không mất dấu của số lượng hiện tại, biến $ một được khai báo tĩnh:

Ví dụ #5 Ví dụ sử dụng các biến tĩnh

$txt4

Bây giờ, $ A chỉ được khởi tạo trong cuộc gọi đầu tiên của hàm và mỗi khi hàm $txt5 được gọi là nó sẽ in giá trị của $ a và tăng nó.

Các biến tĩnh cũng cung cấp một cách để đối phó với các hàm đệ quy. Một hàm đệ quy là một hàm tự gọi. Phải cẩn thận khi viết một hàm đệ quy vì có thể làm cho nó tái phát vô thời hạn. Bạn phải chắc chắn rằng bạn có một cách đủ để chấm dứt đệ quy. Hàm đơn giản sau đây được tính vào 10, sử dụng số lượng tĩnh $ để biết khi nào nên dừng:

Ví dụ #6 biến tĩnh với các hàm đệ quy

$txt6

Các biến tĩnh có thể được gán các giá trị là kết quả của các biểu thức không đổi, nhưng các biểu thức động, chẳng hạn như các lệnh gọi hàm, sẽ gây ra lỗi phân tích cú pháp.

Ví dụ #7 Khai báo các biến tĩnh

$txt7

Kể từ Php 8.1.0, khi một phương thức sử dụng các biến tĩnh được kế thừa (nhưng không được ghi đè), phương thức kế thừa giờ đây sẽ chia sẻ các biến tĩnh với phương thức mẹ. Điều này có nghĩa là các biến tĩnh trong các phương thức bây giờ hoạt động giống như các thuộc tính tĩnh.

Ví dụ #8 Sử dụng các biến tĩnh trong các phương thức được kế thừa

$txt8

Ghi chú::

Khai báo tĩnh được giải quyết trong thời gian biên dịch.

Tài liệu tham khảo với các biến Static object: NULL Static object: NULL Static object: NULL Static object: object(stdClass)#3 (1) { ["property"]=> int(1) } 8 và $txt0

PHP thực hiện công cụ sửa đổi tĩnh và toàn cầu cho các biến về mặt tham chiếu. Ví dụ, một biến toàn cầu thực sự được nhập trong phạm vi hàm với câu lệnh

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
8 thực sự tạo ra một tham chiếu đến biến toàn cầu. Điều này có thể dẫn đến hành vi bất ngờ mà ví dụ sau đây:

Hello world!2

$2

Hello world!4

Ví dụ trên sẽ xuất ra:

NULL
object(stdClass)#1 (0) {
}

Một hành vi tương tự áp dụng cho tuyên bố $txt0. Các tài liệu tham khảo không được lưu trữ một cách thống trị:

Hello world!6

Hello world!7

Hello world!8

Ví dụ trên sẽ xuất ra:

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}

Một hành vi tương tự áp dụng cho tuyên bố $txt0. Các tài liệu tham khảo không được lưu trữ một cách thống trị:

Ví dụ này chứng minh rằng khi gán một tham chiếu đến một biến tĩnh, nó không được nhớ khi bạn gọi hàm Hello world!9 lần thứ hai.

Dodothedreamer tại Gmail Dot Com ¶

$x0

11 năm trước

Warheog tại Warhog Dot Net

$x1

$x2

$x3

$x4

16 năm trước

Michael Bailey (Jinxidoru tại BYU Dot Net) ¶

$x5

$x6

$x7

$x8

$x9

18 năm trước

Andrew tại Planetubh Dot Com ¶

50

51

52

53

54

55

56

57

58

13 năm trước

Warheog tại Warhog Dot Net

59

$y0

$y1

58

16 năm trước

Michael Bailey (Jinxidoru tại BYU Dot Net) ¶

$y3

$y4

$y5

$y6

18 năm trước

Andrew tại Planetubh Dot Com ¶

$y7

$y8

$y9

10.50

10.51

10.52

$x8

10.54

13 năm trước

Larax tại O2 dot pl ¶

10.55

10.56

10.57

10.58

58

Gried tại Nospam Dot Nsys Dot của ¶

Larax tại O2 dot pl ¶

$0

$1

58

Gried tại Nospam Dot Nsys Dot của ¶

Andrew tại Planetubh Dot Com ¶

$3

$4

$x3

$6

13 năm trước

Michael Bailey (Jinxidoru tại BYU Dot Net) ¶

$7

$8

$9

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
00

18 năm trước

Andrew tại Planetubh Dot Com ¶

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
01

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
02

58

13 năm trước

Larax tại O2 dot pl ¶

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
04

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
05

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
06

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)#3 (1) {
  ["property"]=>
  int(1)
}
07

58

Làm thế nào các biến được lưu trữ?

Các biến thường được lưu trữ trong RAM. Đây là trên đống (ví dụ: tất cả các biến toàn cầu thường sẽ đến đó) hoặc trên ngăn xếp (tất cả các biến được khai báo trong một phương thức/hàm thường đi đến đó). Ngăn xếp và đống đều là RAM, chỉ là các vị trí khác nhau. Con trỏ có các quy tắc khác nhau.usually stored in RAM. This is either on the heap (e.g. all global variables will usually go there) or on the stack (all variables declared within a method/function usually go there). Stack and Heap are both RAM, just different locations. Pointers have different rules.

Làm thế nào để các biến hoạt động trong PHP?

Biến PHP..
Trong PHP, một biến không cần phải được khai báo trước khi thêm giá trị vào nó. PHP tự động chuyển đổi biến thành loại 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 suốt mã ..
Toán tử gán (=) được sử dụng để gán giá trị cho một biến ..

Các biến toàn cầu PHP được lưu trữ ở đâu?

PHP lưu trữ tất cả các biến toàn cầu trong một mảng có tên $ Globals [index].Chỉ số giữ tên của biến.$GLOBALS[index]. The index holds the name of the variable.

Tôi khai báo các biến trong PHP ở đâu?

Khai báo các biến PHP Tất cả các biến trong PHP bắt đầu bằng dấu hiệu $ (đô la) theo sau là tên của biến.Một tên biến hợp lệ bắt đầu bằng một chữ cái (A-Z, A-Z) hoặc dấu gạch dưới (_), theo sau là bất kỳ số lượng chữ cái, số hoặc dấu gạch dưới nào.start with a $ (dollar) sign followed by the name of the variable. A valid variable name starts with a letter (A-Z, a-z) or underscore (_), followed by any number of letters, numbers, or underscores.