當我試圖直接用索引訪問數組元素時,我感到困惑。我想我可以更好地解釋它的編碼: -爲什麼我不能直接訪問帶索引的數組?
我有Employee類的一個對象,我把它強制轉換爲數組,並試圖像這樣顯示的:
$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]
------
------
)
現在我在這裏我不明白這個星星(*)。當我的成員變量很簡單,如m_UserId,m_EmialPassword等等,從它得到這個Star。當我嘗試用以下2個報表顯示相同的我得到了一個錯誤: -
display($arrOfObj['*m_EmailAddress']);
或
display($arrOfObj['m_EmailAddress']);
均可以得到該錯誤消息未定義指數:m_EmailAddress
當我試圖這樣做它工作正常: -
display($arrOfObj[$arrKeys[8]]);
最後一個工作正常,任何人都可以解釋我的問題。
display($arrOfObj[$arrKeys[11]]);
display($arrOfObj['m_strEmailAddress']);
那麼我怎樣才能訪問與明星的數組保護鍵,你還沒有回答我的問題的最後3行。 – ScoRpion
如果您從提取的鍵中獲得「真實」鍵值,您顯然會得到正確的鍵。要自己形成正確的密鑰,你必須包含NUL字節,如下所示:'「\ 0 * \ 0m_strEmailAddress」'。 – deceze
它是'「\ 0 * \ 0strThree」'。雙引號字符串和NUL字節圍繞着星號。 – deceze