LoginSignup
26
25

More than 5 years have passed since last update.

Ruby VS PHP ~それぞれのコードを書いてみた~

Last updated at Posted at 2014-02-05

はじめに

  • 普段は会社ではRubyを中心に触っていて、興味があってPHPのお勉強もはじめたのでコードを並べてみた
    • 直感的にはよく似ているなぁと感じた。どっちがいいとかではなく
    • あとはRubyに比べてPHPはセミコロン書くときに違和感があったのと、なんせ$(ドル)をたくさん書くこと

フレームワーク

  • RubyもPHPもどちらも提供されている
    • Ruby ・・・ Ruby on Rails
    • PHP ・・・ CakePHP

実行方法

  • Ruby
$ ruby hoge.rb # ファイルを指定して実行
$ irb          # コマンドプロンプト上で対話形式で実行
irb(main):001:0> puts "hello, ruby!"
hello, irb!
=> nil
  • PHP
$ php hoge.php # ファイルを指定して実行
$ php -a       # コマンドプロンプト上で対話形式で実行
php > echo "hello, php!";
hello, php!

コードを並べてみよう

数値

hoge.rb
puts 1 + 0.25 # => 以下、どれも結果は1.25
puts '1ABC'.to_i + '0.25'.to_f
hoge.php
echo 1 + 0.25; # => 以下、どれも結果は1.25
echo '1' . '.25';
echo 1 + .25;
echo '1ABC' + '.25';

文字列

hoge.rb
str = 'Hello'; # 変数に文字列を代入
puts str + 'World' # 変数に文字列を連結して出力
puts "#{str}, Ruby!!" # => HelloWorld, Ruby!!
puts '#{str}, Ruby!!' # => #{str}, Ruby!!(シングルクオートは式展開なし)
hoge.php
$str = 'Hello'; # 変数に文字列を代入
echo $str . 'World'; # 変数に文字列を連結して出力
echo "{$str}, PHP!!" # => HelloWorld, PHP!!
echo '{$str}, PHP!!' # => {$str}, PHP!!(シングルクオートは式展開なし)

配列/ハッシュ

hoge.rb
arr = ['TOKYO', 'OSAKA', 'KYOTO']
puts arr # => a
         #    b
         #    c
hash = { 'TOKYO' => 'EAST', 'OSAKA' => 'WEST', 'KYOTO' => 'WEST' }
puts hash # => { "TOKYO" => "EAST", "OSAKA" => "WEST", "KYOTO" => "WEST" }
hoge.php
$arr = array('TOKYO', 'OSAKA', 'KYOTO');
print_r($arr);      # => Array
                    #    (
                    #        [0] => TOKYO
                    #        [1] => OSAKA
                    #        [2] => KYOTO
                    #    )
$ass_arr = array('TOKYO' => 'EAST', 'OSAKA' => 'WEST', 'KYOTO' => 'WEST')
print_r($ass_arr);  # => Array
                    #    (
                    #        [TOKYO] => EAST
                    #        [OSAKA] => WEST
                    #        [KYOTO] => WEST
                    #    )

# array_mergeの挙動(同じ数値キーを持つときはインデックスがはり直される)
$a = array('a'); # => Array( [0] => a ) # $aと$bは同じ数値のキーを持つ 
$b = array('b'); # => Array( [0] => b )
print_r(array_merge($a, $b)); # => Array
                              #     (
                              #        [0] => a
                              #        [1] => b
                              #     )

# array_mergeの挙動(同じ文字列キーを持つときは上書きされる)
$a = array('alp' => 'a'); # => Array( [alp] => a ) # $aと$bは同じ文字列のキーを持つ 
$b = array('alp' => 'b'); # => Array( [alp] => b )
print_r(array_merge($a, $b)); # => Array
                              #    (
                              #        [alp] => b
                              #    )

# array_mergeと「+」演算子(array_mergeは再インデックスされる)
$a = array(1 => 1);
$b = array(100 => 100);
print_r($a + $b);             # => Array
                              #    (
                              #        [1] => 1
                              #        [100] => 100
                              #    )
print_r(array_merge($a, $b)); # => Array
                              #    (
                              #        [0] => 1
                              #        [1] => 100
                              #    )

ループ処理

hoge.rb
# each文
(1..3).each {|i| puts i}
# => 1
#    2
#    3
['hoge', 'foo'].each do |str|
  puts str
end
# => "hoge"
#    "foo"

# each_key(each_valueは対象がkeyでなくvalueになるだけなので省略)
{'apple' => 'red', 'banana' => 'yellow'}.each_key do |k|
  puts k
end
# => "apple"
#    "banana"
hoge.php
# for文
for($i = 0;$i < 10;$i++) {
  # 処理
}

# foreach文
$arr1 = array('value1', 'value2');
foreach($arr1 as $v) {
  echo "key: {$v}\n";
}
# => key: value1
#    key: value2

$arr2 = array('key1' => 'value1', 'key2' => 'value2');
foreach($arr2 as $k => $v) {
  echo "key: {$k}, value: {$v}\n";
}
# => key: key1, value: value1
#    key: key2, value: value2

おわりに

  • クラスとか様々なメソッドとかについても書いていこうと思ったけど力尽きてしまったw
  • 結論、どちらもかいていて面白かった^o^

~ただの宣伝~

  • 全国のSeleniumer必読
  • Seleniumerといっていますが、Selenium, SauceLabs, Travis, Jenkinsに関するノウハウ書いているのでよかったら参考にしてみてください
26
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
25