Tôi đã bối rối khi cố gắng truy cập trực tiếp vào phần tử mảng với chỉ mục của nó. Tôi đoán tôi có thể giải thích nó tốt hơn trong mã hóa: -Tại sao tôi không thể truy cập mảng bằng chỉ mục trực tiếp?
Tôi gặp một đối tượng của nhân viên Lớp và tôi định kiểu nó để mảng và cố gắng để hiển thị nó như thế này:
$arrOfObj = (array) $objEmployee;
$arrKeys = array_keys($arrOfObj);
display($arrOfObj); // display() is a method in my library that prints an array in a mannered way.
này mang lại cho tôi kết quả như sau : -
Array
(
[*m_UserId] => 1155
[*m_EmailPassword] =>
[*m_IsAssignedToManagementCompany] =>
[*m_ManagementCompanyId] =>
[*m_DepartmentId] => 3
[*m_DesignationId] => 4
[*m_EmployeeCompletedMonth] =>
[*m_EmployeeCompletedDay] =>
[*m_EmailAddress] =>[email protected]
------
------
)
Hiện tại tôi không hiểu sao này (*). khi các biến thành viên của tôi là đơn giản như m_UserId, m_EmialPassword và Vì vậy, từ đó nó được sao này. và khi tôi cố gắng để hiển thị cùng với sau 2 báo cáo tôi đã nhận ra lỗi: -
display($arrOfObj['*m_EmailAddress']);
hay
display($arrOfObj['m_EmailAddress']);
Cả hai phát biểu thông điệp Lỗi index Undefined: m_EmailAddress
Và khi tôi cố gắng làm điều đó theo cách này Nó hoạt động tốt: -
display($arrOfObj[$arrKeys[8]]);
Tác phẩm cuối cùng hoạt động tốt, Mọi người có thể giải thích cho tôi về sự cố không.
display($arrOfObj[$arrKeys[11]]);
display($arrOfObj['m_strEmailAddress']);
Sau đó, làm cách nào tôi có thể truy cập các khóa được bảo vệ bằng mảng có dấu sao và u không trả lời 3 dòng cuối cùng của câu hỏi của tôi. – ScoRpion
Nếu bạn nhận được giá trị khóa "thực" từ các phím được trích xuất, bạn rõ ràng có được khóa chính xác. Để tự tạo một khóa chính xác, bạn phải bao gồm các byte NUL, như sau: '" \ 0 * \ 0m_strEmailAddress "'. – deceze
Đó là '" \ 0 * \ 0strThree "'. Các chuỗi được trích dẫn kép và các byte NUL nằm xung quanh dấu hoa thị. – deceze