Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Pasangan Nilai-Kekunci 07 dan 08 Lenyap dalam Tatasusunan PHP?

Mengapa Pasangan Nilai-Kekunci 07 dan 08 Lenyap dalam Tatasusunan PHP?

DDD
DDDasal
2024-10-20 19:33:30648semak imbas

Why Do Key-Value Pairs 07 and 08 Vanish in PHP Arrays?

Teka-teki Tatasusunan PHP: Membongkar Misteri Pasangan Nilai-Kekunci 07 dan 08

Dalam bidang tatasusunan PHP, anomali pelik timbul apabila berurusan dengan nilai-kunci pasangan 07 dan 08. Walaupun menetapkan nilai untuk kunci ini, kehadirannya tetap sukar difahami dalam output tatasusunan. Mengelirukan, mengalih keluar sifar di hadapan daripada kekunci secara ajaib menyelesaikan isu ini. Mari kita mendalami alasan di sebalik tingkah laku ingin tahu ini.

PHP, mengikut reka bentuk, mentafsir nombor yang diawali dengan sifar sebagai nilai perlapanan. Ini berlaku untuk kedua-dua nombor perpuluhan dan heksadesimal. Apabila anda menggunakan 07 atau 08 sebagai kunci tatasusunan, PHP mentafsirkannya sebagai nombor perlapanan (masing-masing 7 dan 8), bukan integer perpuluhan (7 dan 8).

Sebagai contoh:

<code class="php">echo 07; // prints 7
echo 010; // prints 8</code>

Keanehan ini menjadi jelas terutamanya apabila menetapkan kekunci tatasusunan:

<code class="php">$months['07'] = 'July';</code>

PHP mentafsir '07' sebagai nilai perlapanan, dengan berkesan memperuntukkan bulan Julai kepada kunci 7. Walau bagaimanapun, memandangkan nilai perlapanan tidak boleh melebihi 7, kunci sebenar 8 diabaikan dengan berkesan dan nilai yang diberikan kepadanya (Ogos) hilang.

Penyelesaian terletak pada mengalih keluar sifar pendahuluan daripada kekunci:

<code class="php">$months['7'] = 'July';
$months['8'] = 'August';</code>

Dengan menghapuskan sifar pendahuluan , PHP mengiktiraf nombor sebagai integer perpuluhan, memberikan nilai dengan betul kepada kekunci 7 dan 8.

Tingkah laku ini juga didokumenkan dalam Manual PHP, dengan jelas menyatakan bahawa menambahkan 0 kepada nombor menyebabkan ia ditafsirkan sebagai nilai perlapanan.

Memahami kelainan berangka ini adalah penting untuk mengelakkan anomali sedemikian dalam pengendalian tatasusunan. Dengan mematuhi konvensyen integer perpuluhan dan mengelak daripada menggunakan sifar pendahuluan dalam kekunci, anda boleh memastikan gelagat tatasusunan PHP yang dijangkakan.

Atas ialah kandungan terperinci Mengapa Pasangan Nilai-Kekunci 07 dan 08 Lenyap dalam Tatasusunan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn