<?php
for ($i = 'a'; $i <= 'z'; $i++)
echo "$i\n";
Cuplikan ini memberikan output berikut (baris baru diganti dengan spasi):
abcdefghijklmnopqrstu vwxyz aa ab ac ad ae af ag ah ai aj ak al am a ao ap aq ar as at au av aw ax ay az ba bb bc bd menjadi bf bg bh bi bj bk bl bm bn bo bp bq b bb bt bt bw bx oleh bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cs ct cu cv cw cx cz cy dz dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ev ... on to yz
$c = 'a';
intinya adalah bahwa di C ada tipe char (karakter 1 simbol), tetapi tidak dalam PHP, jika U tell PHP$c = 'a';
- berarti ini adalah string dengan hanya 1 karakter. Itu sebabnya Anda tidak dapat mengulang melalui 28 karakter secara memadai di PHP. Saya harap setiap programmer akan belajar bahasa tingkat rendah dan mengetik dengan kuat, tanpa melupakan praktik Matematika, yang akan membantu mereka menjadi lebih kuat.==
atau!=
), periksa jawaban ini untuk pertanyaan terkait .Jawaban:
Dari dokumen :
Dari Komentar: -
Perlu juga dicatat bahwa itu
<=
adalah perbandingan leksikografis, jadi'z'+1 ≤ 'z'
. (Sejak'z'+1 = 'aa' ≤ 'z'
. Tapi'za' ≤ 'z'
adalah pertama kali perbandingannya salah.) Melanggar kapan$i == 'z'
akan berhasil, misalnya.Contoh di sini .
sumber
ord()
jadi saya tidak pernah memperhatikan ini.'aa'
secara leksikografis lebih kecil daripada'z'
, itu sebabnya loop berlanjut. Dan itu berhenti'yz'
karena'za'
lebih besar dariz
. Lihat contoh ini .Karena setelah 'z' tercapai (dan ini adalah hasil yang valid dalam rentang Anda, $ i ++ menaikkannya ke nilai berikutnya secara berurutan), nilai berikutnya akan menjadi 'aa'; dan menurut abjad, 'aa' adalah <'z', jadi perbandingannya tidak pernah terpenuhi
sumber
Jawaban lain menjelaskan perilaku yang diamati dari kode yang diposting. Berikut adalah salah satu cara untuk melakukan apa yang Anda inginkan (dan itu adalah kode bersih, IMO):
Menanggapi komentar / pertanyaan ShreevatsaR tentang fungsi rentang : Ya, ini menghasilkan "titik akhir yang tepat", yaitu nilai yang diteruskan ke fungsi berada dalam kisaran. Sebagai ilustrasi, output dari kode di atas adalah:
sumber
Orang lain sudah mengatakan mengapa PHP tidak menunjukkan apa yang Anda harapkan. Inilah cara Anda mendapatkan hasil yang mungkin Anda inginkan:
sumber
Kenapa tidak pakai saja
range('a','z')
?sumber
Coba kode ini. Saya pikir kode ini akan membantu Anda.
Tampilkan 26 huruf secara berurutan.
sumber
sumber
Ini juga dapat digunakan:
sumber
PHP memiliki fungsi pengulangan huruf dan dapat melebihi karakter tunggal; sisanya akan dilakukan dengan cara ini: aa ab ac ... zz, dan seterusnya.
Coba ini:
sumber
Sementara jawaban di atas sangat memahami apa yang terjadi, dan cukup menarik (saya tidak tahu itu akan berperilaku seperti ini, dan bagus untuk melihat alasannya.
Perbaikan termudah (meskipun mungkin bukan yang paling berarti) adalah dengan mengubah kondisinya menjadi $ i! = 'Z'
sumber
PHP tidak menganggap 'AA' kurang dari 'Z'. Cara terbaik untuk melakukannya adalah:
abcdefghijklmnopqrstuvwxyz
sumber
Mungkin kode ini akan berfungsi. Mudah & bisa dimengerti:
di mana 26 adalah jumlah total huruf dalam alfabet.
sumber
Wow saya benar-benar tidak tahu tentang ini tetapi itu bukan kode besar Anda dapat mencoba gema "z" setelah loop Mark Benar-Benar Benar Saya menggunakan metodenya tetapi jika Anda ingin alternatif maka ini juga dapat Anda coba
sumber