Byłem zdezorientowany, gdy próbowałem uzyskać dostęp do elementu tablicy bezpośrednio z jego indeksem. Chyba mogę to wytłumaczyć lepiej kodowania: -Dlaczego nie mogę uzyskać dostępu do tablicy z indeksem bezpośrednio?
Mam obiekt klasy Employee i typecast go do tablicy i próbował wyświetlić go tak:
$arrOfObj = (array) $objEmployee;
$arrKeys = array_keys($arrOfObj);
display($arrOfObj); // display() is a method in my library that prints an array in a mannered way.
to daje mi następujący wynik : -
Array
(
[*m_UserId] => 1155
[*m_EmailPassword] =>
[*m_IsAssignedToManagementCompany] =>
[*m_ManagementCompanyId] =>
[*m_DepartmentId] => 3
[*m_DesignationId] => 4
[*m_EmployeeCompletedMonth] =>
[*m_EmployeeCompletedDay] =>
[*m_EmailAddress] =>[email protected]
------
------
)
Teraz nie rozumiem tej Gwiazdy (*). kiedy moje zmienne składowe są proste jak m_UserId, m_EmialPassword i So on, skąd pochodzi ta Gwiazda. i gdy próbuję wyświetlić to samo z 2 następujących stwierdzeń mam błąd: -
display($arrOfObj['*m_EmailAddress']);
lub
display($arrOfObj['m_EmailAddress']);
dadzą się komunikat o błędzie Undefined index: m_EmailAddress
A kiedy próbuję to zrobić w ten sposób Działa to dobrze: -
display($arrOfObj[$arrKeys[8]]);
Ten ostatni działa dobrze, Czy ktoś może mi wyjaśnić problem.
display($arrOfObj[$arrKeys[11]]);
display($arrOfObj['m_strEmailAddress']);
Jak mogę uzyskać dostęp do kluczy chronionych tablicą gwiazdką, a ty nie odpowiedziałeś na ostatnie 3 linijki mojego pytania. – ScoRpion
Jeśli otrzymasz "prawdziwą" wartość klucza z wyodrębnionych kluczy, oczywiście otrzymasz właściwy klucz. Aby samemu utworzyć poprawny klucz, musisz dołączyć bajty NUL, takie jak: '" \ 0 * \ 0m_strEmailAddress "'. – deceze
To '' \ 0 * \ 0strThree "'. Podwójnie cytowane ciągi i bajty NUL znajdują się wokół gwiazdki. – deceze