2011-08-05 69 views
5

Nếu tôi có một mảng trong PHP hiện đang rỗng, không nên truy cập vào một chỉ mục không xác định trình bày lỗi mức E_NOTICE?Hành vi chỉ mục không xác định

Nếu tôi có đoạn mã sau đây:

$myArray = null; 
echo $myArray['foo']['bar']; 

Tôi mong chờ một lỗi nhưng nó chạy mà không vấn đề. Tôi đã xác minh cấp độ nhật ký của mình để được đặt thành E_ALL. Có cái gì tôi đang thiếu hoặc là PHP hạnh phúc trở về null cho các chỉ số không xác định miễn là bạn không cố gắng sửa đổi dữ liệu?

+0

cố gắng truy cập bugs.php.net Đối với tôi, đó là hành vi lạ. $ myArray = mảng(); echo $ myArray ['foo'] ['bar']; bị lỗi như tôi nghĩ – RiaD

+0

@Dan W: FabioG, là chính xác. – linguini

+0

@RiaD: Không tìm thấy lỗi. http://www.meandeviation.com/tutorials/learnphp/php-syntax-check/v4/do-syntax-check.php – linguini

Trả lời

3

Có, chỉ mục không xác định chỉ kích hoạt cho các biến số không null (không hỏi tôi tại sao). Điều này sẽ kích hoạt một thông báo mặc dù:

<?php 
    error_reporting(E_ALL); 
    $myArray = array(); 
    echo $myArray['foo']['bar']; 
?> 
2

không, nó không hiển thị bất kỳ lỗi nào khi $ myArray được đặt thành rỗng. nếu nó là một mảng trống hoặc bất kỳ giá trị nào khác ngoại trừ giá trị rỗng thì nó trả về lỗi mức E_NOTICE. tôi thực sự không biết tại sao nhưng nó là như nó được.

+1

Chỉ cần kiểm tra và bạn đã đúng. Thiết lập để null không có lỗi, nhưng một mảng trống nào. –

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