Anomali Tatasusunan PHP dengan Kekunci 07 dan 08
Menghadapi tingkah laku tatasusunan yang luar biasa dengan kunci 07 dan 08 dalam tatasusunan PHP yang ditakrifkan seperti berikut:
<code class="php">$months[01] = 'January'; $months[02] = 'February';</code>
Apabila cuba mencetak tatasusunan menggunakan print_r($months), kekunci 07 dan 08 hilang, dan September muncul dengan kunci 0 sebaliknya.
Sebab dan Penyelesaian
Penyelewengan timbul kerana kekunci angka bermula dengan 0 ditafsirkan sebagai nilai perlapanan dalam PHP. Ini bermakna 07 dihuraikan sebagai integer 7, dan 08 dihuraikan sebagai 8. Untuk mengelakkan masalah ini, cuma keluarkan 0 di hadapan daripada kekunci.
<code class="php">$months[7] = 'July'; $months[8] = 'August';</code>
Ini akan memastikan kekunci itu dikenali dengan betul dan tatasusunan berkelakuan seperti yang diharapkan.
Contoh
Kod berikut menunjukkan perbezaan antara menggunakan 0 pendahuluan dan bukan:
<code class="php">echo 07; // prints 7 echo 010; // prints 8 echo 7; // prints 7 echo 10; // prints 10</code>
Nota Tambahan
Tingkah laku ini biasanya digunakan apabila menentukan kebenaran fail UNIX:
<code class="php">chmod("myfile", 0660);</code>
Walau bagaimanapun, ia jarang diperlukan untuk tujuan lain. Manual PHP menyediakan butiran lanjut tentang kekunci angka dan nilai perlapanan.
Atas ialah kandungan terperinci Mengapa Tatasusunan PHP dengan Kekunci 07 dan 08 Mempamerkan Gelagat Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!