この記事の概要
Rubyで学習を始めてPHPに言語チェンジをする人が一定数いるみたいなので
そういった人達が参考にするための記事です。
こちらの記事の続きです。
https://qiita.com/Hashimoto-Noriaki/items/82beae9d3d6dac11e11c
比較
演算子などを使った比較の方法をみていきます。
PHPで値を調べる
var_dump
を使うと値の解析ができます。
var_dump(10);
var_dump("10");
//int(10)
//string(2) "10" と出力
initは数値
のことで、stringは文字列
のことです。
stringの後の(2)は文字数のことです。
条件式
数値などを比較をする時には使う条件式をRubyとPHPで比較しながら見ていきます。
==
は比較したものが等しいかをチェックします。
⚫︎Ruby
puts 100 == 100
puts 100 == 1000
#true
#falseと出力
⚫︎PHP
var_dump(100 == 100);
var_dump(100 == 1000); と出力
//bool(true)
//bool(false)
bool型
はtrue(正しい)かfalse(正しくない)を表す型です。
比較演算子
比較記号のことを比較演算子
と言いますが、RUbyもPHPも共通です。
x == y #両者が等しいか
x < y #xよりyが大きい
x <= y #x以上
x >= y #x以下
X!= y #xとyは違う
PHPで型を比較する
PHPでの型の比較方法を見ていきます。
型の比較では ===
を使います。
var_dump(100 == "100");
var_dump(100 === "100");
//bool(true)
//bool(false)
==の場合は型の比較はしない
のでtrueになっています。
===の場合は型の比較をするので
falseになっています。
Rubyで調べてみたらこのような機能はなかったです。
if文(条件分岐)
if文を使った条件分岐(これはもし〜なら〜で処理するみたいな仮定法みたいな文)
を見ていきます。
if-elseif-elseを使ったポケモンのレベルに関するif文を見ていきます。
⚫︎Ruby
pokemon_level = 70
if pokemon_level >= 80
#レベル80以上
puts "めっちゃ強い"
elsif pokemon_level >= 50
#レベル50以上
puts "強い"
elsif pokemon_level >= 30
puts "普通"
else
#レベルが30に行かないポケモン
puts "弱い"
end
#レベル70なので強いと出力
⚫︎PHP
$pokemon_level = 70;
if($pokemon_level >= 80){
//レベル80以上
echo "めっちゃ強い";
} elseif ($pokemon_level >= 50){
//レベル50以上
echo "強い";
} elseif ($pokemon_level >= 30){
echo "普通";
}else {
//レベルが30に行かないポケモン
echo "弱い";
}
//レベルが70なので今回は強いと出力
条件分岐をRubyとPHPで比較
Rubyと比べてPHPは{}や()
をif文やelseの後に入れたり、
elsifがelseifになったり、Rubyではendをつけたり
違いがあります。
条件式の記号
条件式の記号の使い方もみていきます。
まずAND条件の&&
からです。
⚫︎Ruby
puts 50 <= i && i < 80
#どちらも trueなのでtrue
#そうでない場合はfalse
⚫︎PHP
50 <= $i && $i < 80
どちらも trueならtrueでそうでない場合はfalseになります。
次にOR条件の||
を見ていきます。
⚫︎Ruby
a < 100 || b < 100
⚫︎PHP
$a < 100 || $b < 100
どれかがtrueならtrueになります。全てfalseならfalseになります。
配列
次に配列を見ていきます。
⚫︎Ruby
animal = ["犬","猫","猿","ライオン"]
puts animal[0] #犬が出力
⚫︎PHP
$animal = ["犬","猫","猿","ライオン"];
echo $animal[0]; //犬が出力
ハッシュ(連想配列)
次にハッシュ(連想配列)を見ていきます。
⚫︎Ruby
language = {"lan1" =>"日本語","lan2" => "英語","lan3" => "中国語","lan4" => "フランス語"}
puts language["lan1"] #日本語と出力
⚫︎PHP
$language = ["lan1" =>"日本語","lan2" => "英語","lan3" => "中国語","lan4" => "フランス語"];
echo $language["lan1"]; //日本語が出力
補足
lan1などのkeyの部分は自分や他の人がわかりやすいもので、自由に選べます。
key1などでだとわかりやすそうですね。
ちなみに文字列の部分はvalueです。
Rubyのシンボル
⚫︎Ruby
連想配列の書き方でシンボル
という文字列を:
にして簡単に書けるようにしたものです。
毎回""をつけるとめんどくさいのでこのように簡略化した書き方もあります。
language = {:lan1 =>"日本語",:lan2 => "英語",:lan3 => "中国語",:lan4 => "フランス語"}
puts language[:lan1] #日本語と出力
こっちの書き方でも可能です。
language = {lan1: "日本語",lan2: "英語"}
puts language[:lan1] #日本語と出力
PHPでもこの書き方を試したのですが、シンボルに書けなかったです。
もし知っている方がいたら教えてください。
いろんな書き方
いろんな配列の書き方を見ていきます。
1.多次元配列
配列の中に配列が書けます。
⚫︎Ruby
[[100],[200]]
⚫︎PHP
[[100],[200]];
2.配列の中にハッシュ
配列の中にハッシュを入れることができます。
⚫︎Ruby
[{"key1" => "Ruby"}]
⚫︎PHP
[["key1" => "PHP"]];
3.ハッシュの中に配列
ハッシュの中に配列を入れることができます。
⚫︎Ruby
{"key1" => ["Ruby"]}
⚫︎PHP
["key1" => ["PHP"]];
実務に入った時にこんな感じの書き方を実際見ました。
繰り返し処理
eachなどを使った繰り返し処理を見ていきます。
each文とforeach文
⚫︎Ruby
language = ["日本語","英語","中国語","フランス語"]
language.each do |lang|
puts lang
end
#日本語
#英語
#中国語
#フランス語 と出力
⚫︎PHP
$language = ["日本語","英語","中国語","フランス語"];
foreach($language as $lang){
echo $lang;
};
//日本語
//英語
//中国語
//フランス語 と出力
each文の両者の違い
Rubyはeach
を使いますが、PHPはforeach
を使います。
それぞれの書き方も異なってくるので比較します。
⚫︎Ruby
配列.each do |変数|
#ループ処理
end
⚫︎PHP
foreach($配列 as $変数){
//ループ処理
}
両者を比較するとだいぶ書き方が違いますね。
ハッシュの繰り返し処理
⚫︎Ruby
language = {"佐藤" =>"日本語","マイク" => "英語","王" => "中国語","エマ" => "フランス語"}
language.each do |key,value|
puts "#{key}さんは#{value}が話せます。"
end
#佐藤さんは日本語が話せます。
#マイクさんは英語が話せます。
#王さんは中国語が話せます。
#エマさんはフランス語が話せます。 と出力
⚫︎PHP
$language = ["佐藤" =>"日本語","マイク" => "英語","王" => "中国語","エマ" => "フランス語"];
foreach ($language as $key => $value){
echo "{$key}さん{$value}が話せます。";
}
//佐藤さんは日本語が話せます。
//マイクさんは英語が話せます。
//王さんは中国語が話せます。
//エマさんはフランス語が話せます。 と出力
putsとechoで出力する時に、変数を出力する時に#を使うか使わないかの違いがあります。
他は上の繰り返し処理と同じです。
ループ処理のスキップ(nextとcontinue)
普通のループ処理だと変数の中身がそのまま出力されますが、
Rubyでnext
、PHPでcontinue
を
使うとループ処理のスキップができます。
例えば中国語を出力させないでループ処理をする場合を見ていきます。
⚫︎Ruby
language = ["日本語","英語", "中国語", "フランス語"]
language.each do |lang|
next if lang == "中国語"#lang == "中国語"がtrueならnextを実行
puts lang
end
#日本語
#英語
#フランス語 と出力
⚫︎PHP
$language = ["日本語","英語","中国語","フランス語"];
foreach($language as $lang){
if($lang == "中国語"){
continue;
}
echo $lang;
}
//日本語
//英語
//フランス語 と出力
書き方がそれぞれ違うので確認していきましょう。
参考資料
下の動画を元に作成しています。