当我尝试直接使用索引访问数组元素时,我感到很困惑。我想我可以在编码中更好地解释它:-
我有一个 Employee 类的对象,我将其 TypeCast 到数组并尝试像这样显示它:
$arrOfObj = (array) $objEmployee;
$arrKeys = array_keys( $arrOfObj );
display( $arrOfObj ); // display() is a method in my library that prints an array in a mannered way.
这给了我以下输出:-
Array
(
[*m_UserId] => 1155
[*m_EmailPassword] =>
[*m_IsAssignedToManagementCompany] =>
[*m_ManagementCompanyId] =>
[*m_DepartmentId] => 3
[*m_DesignationId] => 4
[*m_EmployeeCompletedMonth] =>
[*m_EmployeeCompletedDay] =>
[*m_EmailAddress] =>[email protected] /cdn-cgi/l/email-protection
------
------
)
现在我不明白这个星(*)。当我的成员变量很简单,如 m_UserId、m_EmialPassword 等时,它从哪里获得这个星号。当我尝试使用以下 2 条语句显示相同内容时,出现错误:-
display( $arrOfObj['*m_EmailAddress'] );
or
display( $arrOfObj['m_EmailAddress'] );
两者都给出错误消息未定义索引:m_EmailAddress
当我尝试这样做时,效果很好:-
display( $arrOfObj[$arrKeys[8]] );
最后一个工作正常,谁能解释一下问题所在。
display( $arrOfObj[$arrKeys[11]] );
display( $arrOfObj['m_strEmailAddress'] );