01/10/2018, 16:54

Biến trong php?

em có 1 số thắc mắc về biến trong php

  1. có phải tất cả biến trong php đều là biến kiểu tham chiếu ( giống như ruby tất cả biến đều là đối tượng ) ?
  2. trong java có các kiểu dữ liệu không thể thay đổi giá trị , trong php có điều này không ạ ( vd : Java int , string là kiểu dữ liệu không thể thay đổi giá trị mỗi lần ta thay đổi thì thực chất nó tạo ra 1 literal trong pool )
  3. hơi ngoài lề xíu @@ các kiểu dữ liệu nguyên thủy trong java thì giá trị nó được lưu ngay tại biến luôn hay là tham chiếu đến pool ( kiểu như biến chỉ như con trỏ và giá trị con trỏ trỏ đến vùng nhớ trên pool )
Nguyễn Khánh viết 18:55 ngày 01/10/2018

hóng câu trả lời vì quan tâm cùng chủ đề

kid1412 viết 18:58 ngày 01/10/2018
  1. có phải tất cả biến trong php đều là biến kiểu tham chiếu

Không. Nếu muốn khai báo biến kiểu tham chiếu bạn phải thêm dấu & trước. VD:

$var1 = 'day nhau hoc';
$var2 = &$var1;

Khi bạn khai báo biến, php sẽ gán giá trị cho biến đó. Nếu bạn gán 1 biến khác = biến đấy và thay đôi giá trị 1 trong 2. Thì biến còn lại vẫn không bị ảnh hưởng (trừ khi có reference ‘&’).

  1. trong java có các kiểu dữ liệu không thể thay đổi giá trị , trong php có điều này không ạ

PHP linh hoạt khi khai báo biến nên sẽ tự động ép kiểu. VD:

$var1 = 'asdasdasd'; // string
$var2 = true; // boolean

Kể cả bạn có đổi giá trị, nó vẫn tự động ép thành kiểu của giá trị mới. Tất nhiên là bạn vẫn có thể ép kiểu:

$var1= "20"; // string
$var2 = (int) $var1; // int
  1. hơi ngoài lề xíu @@ các kiểu dữ liệu nguyên thủy trong java thì giá trị nó được lưu ngay tại biến luôn hay là tham chiếu đến pool

Mình làm php nên không thể trả lời chính xác được câu hỏi này cho bạn nhờ người khác vậy. Bạn hiểu thế này. Khi khai báo 1 biến nó sẽ ghi địa chỉ biến đấy vào RAM và giá trị được tham chiếu qua cái địa chỉ đấy. Nếu bạn gán tham chiếu 1 biến khác đến biến đấy thì nó sẽ gán cùng 1 địa chỉ. Nếu gán tham trị nó sẽ tạo địa chỉ khác và copy giá trị của biến kia sang.
Có gì sai các bác jav góp ý cho mình :))

Bài liên quan
0