20210420・21_アウトプット(php)
やったこと
- 初めてのphp(3章ロジックと繰り返し)
1%の成長
- 初見で見た時に「?」と感じた数値や文字列の比較について理解できた。
新しい発見
ASCIIってなんだ?
American Standard Code for Information Interchange
の略で、ASCII(アスキー)と読む。- 半角英数字と記号のみ。以前はアルファベットを使えれば事足りたが、それだと日本語が❌なので、その後アスキーコードにひらがなやカタカナ、漢字を追加した新しい表を作った(なので、UTF8なのか💡)
- 「文字」と「文字に割り当てた番号」を「符号化文字集合」という。
- 「文字に割り当てた番号」と「実際にコンピュータが扱う数字」を「文字符号化形式」という。(アスキーコードは、「符号化文字集合」と「無事符号化形式」が同一)
比較で小さい順 | 内容 |
---|---|
1 | 数字 |
2 | 英語(大文字) |
3 | 英語(小文字) |
なるほど!
- phpでは文字の比較ができる。その時に混乱したのがアルファベット順よりも「数字」「大文字の英語」「小文字の英語」が優先されること。
- 例えば、「W」と「a」の比較だと、「a」の方がアルファベット順だと1番だから前かな?と思いきや、「大文字の英語」の方が優先されるので「W」→「a」と判断される。
<?php // Your code here! if ('W' < 'a') { print 'aの方が後ろだよ'; } else { print 'Wの方が後ろだよ'; } ?> 👇実行後👇 aの方が後ろだよ
様々な比較
比較対象 | 状況 | こう比較される | 結果 |
---|---|---|---|
"x54321"と"x5678" | 文字列+数字 | 3番目にある4 と6 の比較 |
"x54321"の方が小さい! |
"54321"と"5678" | 文字列の数字 | 数値に置き換えられ54321と5678の比較 | 5678の方が小さい |
'6 pack'と'55 card stud' | 数字+文字列 | 1番目にある6 と5 の比較 |
'55 card stud'の方が小さい |
'6 pack'と55 | 数字入り文字列と数字 | 6が数値に置き換えられ6 と55 の比較 |
'6 pack'の方が小さい |
つまり、
- その対象は、比較対象ともに「文字列と数字ミックス」か?
👉一文字目の「数字」「大文字」「小文字」で判断。 - その対象は、比較対象ともに「数字(文字列の数字含む)」または、比較対象片方が「数字(文字列の数字含む)」か?
👉数の大きさで判断。 と理解。
感想
- 整理できてスッキリ。(Rubyの時は、そもそもデータ型が異なるものは違うと判断すると思うので、この概念について学んだ時、初めはどういう意味?って思った)
- なんで、片方数字だと両方数字の比較になることについて、どういうところで使えるんだろう?