2008-10-28 44 views
7

Tôi có một biến được xây dựng trong vòng lặp. Một cái gì đó như:PHP: Đúng cách để khai báo biến trước khi sử dụng trong vòng lặp

$str = ""; 
for($i = 0; $i < 10; $i++) $str .= "something"; 

Nếu $ str = "" được xác nhận, tôi nhận được thông báo biến không xác định, nhưng tôi nghĩ rằng php tự động khai báo biến lần đầu tiên nó nhìn thấy không khai báo?

Tôi làm như thế nào?

Trả lời

14

Bạn nhận được biến không xác định vì bạn đang ghép nối giá trị của chính nó với một giá trị khác.

Tương đương

$str = $str . "something";

Vì vậy, nó không thể nói giá trị ban đầu là những gì được. Nó tương đương với việc này:

$str = [undefined value] . "something";

kết quả của một nối của [undefined value]"something" là gì? Người phiên dịch không thể nói ...

Vì vậy, bạn phải đặt "" vào biến đầu tiên để bắt đầu giá trị của biến, như bạn đã làm.

HTH

+0

Tôi đã giả sử phạm vi biến cũng áp dụng cho vòng lặp nhưng bạn cũng đúng điều tương tự đã xảy ra với tôi và bây giờ tôi hiểu lý do. +1 – Tarik

4

Sẽ an toàn hơn khi không sử dụng tính năng tự động khai báo - đó là lý do tại sao nó phát hành thông báo. Thông báo là mức cảnh báo thấp nhất và sẽ không được hiển thị theo mặc định. Hầu hết các ứng dụng PHP cũ hơn sẽ phát hành nhiều thông báo nếu bạn bật chúng lên.

8

Nếu bạn thực sự cần phải làm cho nó là nó sạch hơn bạn có thể làm:

for($i = 0, $str = ''; $i < 10; $i++) $str .= "something"; 

Nhưng những gì bạn có là những gì tôi thường làm. vlceBerg giải thích rõ.

+1

Chỉ là một ý nghĩ ... bạn có thể làm điều này: cho ($ i = 0, $ str = ''; $ i <10; $ i ++, $ str. = "Một cái gì đó"); ? Tôi không có hộp PHP ngay bây giờ để kiểm tra .... – vIceBerg

+1

Dường như có: zsh% echo ' '| php somethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomething –

+0

Yep vlceBerg - bạn thậm chí không cần nội dung vòng lặp. Tôi thấy dễ hiểu hơn bằng cách sử dụng nội dung nhưng thấy đó là một dòng bạn không cần. – Ross

2

Biến PHP được tự động khai báo được đăng ký là không xác định, đó là lý do bạn nhận được thông báo.

Nói chung tốt hơn là nên khai báo các biến PHP trước khi sử dụng chúng mặc dù nhiều người lười biếng trong số chúng ta, bản thân tôi không bao giờ làm điều đó.

Các vấn đề liên quan