String dalam PHP tidak mempunyai had khusus mengenai panjangnya dalam binaan 64-bit seperti PHP 7.0.0. Walau bagaimanapun, binaan 32-bit dan versi terdahulu mengenakan had 2GB (2147483647 bait).
Dalam PHP 5.x, rentetan dihadkan kepada 231-1 bait disebabkan penggunaan daripada integer 32-bit yang ditandatangani untuk merekodkan panjangnya.
Skrip PHP mempunyai had pada jumlah memori yang boleh mereka peruntukkan untuk pembolehubah, dengan berkesan meletakkan had pada panjang sesuatu pembolehubah rentetan tunggal. Had ini ditetapkan oleh arahan memory_limit dalam php.ini. Ia lalai kepada 128MB dalam PHP 5.2 dan 8MB dalam versi terdahulu.
Jika tiada had memori ditentukan, ia lalai kepada nilai yang ditetapkan semasa penyusunan. Menetapkan nilai -1 dalam php.ini melumpuhkan semakan memori, membenarkan skrip menggunakan memori sebanyak yang disediakan oleh sistem pengendalian.
Arahan had memori mengenakan had praktikal pada panjang rentetan, tanpa mengira had teori. Selain itu, saiz fail boleh menjadi faktor apabila menyedut kandungannya menggunakan fungsi seperti file_get_contents().
Demonstrasi mudah:
<code class="php">ini_set('memory_limit', 1024*1024); printf("memory: %d\n", memory_get_usage(true)); $str = str_repeat('a', 255*1024); echo "Allocated string of 255KB\n"; printf("memory: %d\n", memory_get_usage(true)); $str = str_repeat('a', 256*1024); echo "Allocated string of 256KB\n"; printf("memory: %d\n", memory_get_usage(true));</code>
Di sini, had memori 1MB ditetapkan. Memperuntukkan 255KB memori rentetan tidak melebihi had, tetapi cuba memperuntukkan 256KB mencetuskan ralat maut kerana mencapai had.
Atas ialah kandungan terperinci Apakah batasan praktikal pada panjang rentetan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!