Mi sono confuso quando stavo cercando di accedere a un elemento di matrice direttamente con il suo indice. Credo che avrei potuto spiegarlo meglio nella codifica: -Perché non posso accedere direttamente alla matrice con indice?
Sto avendo un oggetto della classe Employee e ho typecast a matrice e ho cercato di visualizzare in questo modo:
$arrOfObj = (array) $objEmployee;
$arrKeys = array_keys($arrOfObj);
display($arrOfObj); // display() is a method in my library that prints an array in a mannered way.
questo mi dà il seguente risultato : -
Array
(
[*m_UserId] => 1155
[*m_EmailPassword] =>
[*m_IsAssignedToManagementCompany] =>
[*m_ManagementCompanyId] =>
[*m_DepartmentId] => 3
[*m_DesignationId] => 4
[*m_EmployeeCompletedMonth] =>
[*m_EmployeeCompletedDay] =>
[*m_EmailAddress] =>[email protected]
------
------
)
Ora qui non capisco questa stella (*). quando le mie variabili membro sono semplici come m_UserId, m_EmialPassword e così via da dove viene questa stella. e quando cerco di visualizzare lo stesso con i seguenti 2 affermazioni ho ottenuto un errore: -
display($arrOfObj['*m_EmailAddress']);
o
display($arrOfObj['m_EmailAddress']);
Entrambi danno il messaggio di errore Undefined index: m_EmailAddress
E quando provo a farlo in questo modo funziona bene: -
display($arrOfObj[$arrKeys[8]]);
L'ultimo funziona bene, Qualcuno può spiegarmi il problema.
display($arrOfObj[$arrKeys[11]]);
display($arrOfObj['m_strEmailAddress']);
Quindi, come posso accedere alle chiavi protette con l'array con la stella, e non ho risposto alle ultime 3 righe della mia domanda. – ScoRpion
Se si ottiene il valore della chiave "reale" dalle chiavi estratte, ovviamente si ottiene la chiave corretta. Per formare tu stesso una chiave corretta, devi includere i byte NUL, in questo modo: '" \ 0 * \ 0m_strEmailAddress "'. – deceze
È '" \ 0 * \ 0strThree "'. Le stringhe con doppia quotatura e i byte NUL sono attorno all'asterisco. – deceze