インデックスを使って配列要素に直接アクセスしようとしたときに混乱しました。私は、コーディングでより良いそれを説明することができると思います: -インデックスで直接配列にアクセスできないのはなぜですか?
私は従業員クラスのオブジェクトを持っていると私は配列に型キャストし、このようにそれを表示しようとした:
$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を取得するかを指定します。
m_EmailAddress:
display($arrOfObj['*m_EmailAddress']);
または
display($arrOfObj['m_EmailAddress']);
の両方がエラーメッセージに未定義のインデックスを与える - :私は2文を次のように同じことを表示しようとすると、私はエラーを得ましたそして、私がこのようにしてみると、うまくいく: -
display($arrOfObj[$arrKeys[8]]);
最後の1つはうまく動作します、誰も私に問題を説明することができます。
display($arrOfObj[$arrKeys[11]]);
display($arrOfObj['m_strEmailAddress']);
次に、私はstarで配列保護キーにアクセスできますが、私の質問の最後の3行には返信していません。 – ScoRpion
抽出されたキーから「本当の」キー値を取得した場合は、明らかに正しいキーを取得します。正しい鍵を自分で作成するには、 '' \ 0 * \ 0m_strEmailAddress "'のようにNULバイトを含める必要があります。 – deceze
'\ 0 * \ 0strThree" 'です。二重引用符で囲まれた文字列とNULバイトはアスタリスクのまわりにあります。 – deceze