PerlerのためのPHP1
たぶんPHPを使わなければならないようになると思うので、今のうちから勉強。
ああCatalystでもっと遊びたい。
とりあえずこれを買った。
- 作者: David Sklar,桑村潤,廣川類
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/10/27
- メディア: 単行本
- 購入: 6人 クリック: 54回
- この商品を含むブログ (41件) を見る
読んでるけど忘れないうちに以下メモ。
開始と終了
PHP
<?php CODE ?>
「< ?php」と「?>」で囲んだところがPHPコードとして解釈される……、と思ったけど、ライブラリ的に書くときは「?>」をつけないらしい。
参考:「PHP基礎文法最速マスターの補足 - モノノフ日記」
Perlだとあの「1;」をつけないといけない、あたりに該当すると思う。
大文字小文字
Perl
print "ok\n"; #=> 動く PRinT "ok\n"; #=> 動かない sub test { print "ok\n"; } test(); #=> 動く TeSt(); #=> 動かない
コメント
文字列
ヒアドキュメント
Perl
$id = 'abcde111'; print << END_OF_SQL; SELECT COUNT(*) FROM users WHERE id = '$id' END_OF_SQL
trueとfalse
多い。
ifelse
Perl
if (EXPR) { } elsif (EXPR) { } else { }
配列
Perl
@array = ( 'Safari', 'FireFox', 'Chrome', 'IE', 'Opera', ); $count = @array; print $count; #=> 5
PHP
<?php $array = array( 'Safari', 'FireFox', 'Chrome', 'IE', 'Opera', ); $count = count($array); print $count; #=> 5 ?>
配列を「$」に入れるから見た目が慣れないな…。
配列の最後にカンマ入れても問題ないのは同じ。よかった。
ハッシュ
Perl
%hash = ( red => '#f00', green => '#0f0', blue => '#00f', ); print $hash{red}; #=> #f00
foreach
配列のまわし方。
まあPerlはforもforeachも同じもので僕はC的なforは使わないので、そのバージョン。
Perl
foreach my $browser (@array) { print "$browser\n"; }
Perl
foreach my $col (keys(%hash)) { print "$col, $hash{$col}\n"; }
PHP
<?php foreach ($hash as $col => $rgb) { print "$col, $hash[$col]\n"; } ?>
ハッシュの値で存在有無
Perl
if (grep('#f00' eq $_, values(%hash))) { }
Perl
if (my ($col) = grep('#f00' eq $hash{$_}, keys(%hash))) { }
配列をjoin()
Perl
print join(',', @array); #=> Safari,FireFox,Chrome,IE,Opera,iCab
PHP
<?php print implode(',', $array); #=> Safari,FireFox,Chrome,IE,Opera,iCab ?>
配列をsplit()
Perl
$browser = 'Safari,FireFox,Chrome,IE,Opera,iCab'; @array = split(/,/, $browser); print $array[2]; #=> Chrome
配列をsort()
Perl
@array = sort(@array); print "@array\n"; #=> Chrome FireFox IE Opera Safari iCab
ハッシュをソート
ここからPHPを先に。
PHP
<?php sort($hash); foreach ($hash as $col => $rgb) { print "$col, $rgb\n"; } #=> 0, #00f #=> 1, #0f0 #=> 2, #f00 ?>
うおい。
キーのところが配列の添字に変えられてしまったよ。
Perlなら、
PHP
<?php asort($hash); foreach ($hash as $col => $rgb) { print "$col, $rgb\n"; } #=> blue, #00f #=> green, #0f0 #=> red, #f00 ?>
Perlなら、ハッシュに順番がないので、
Perl
@array = (); for my $rgb (sort(values(%hash))) { my ($col) = grep($rgb eq $hash{$_}, keys(%hash)); push @array, ($col, $rgb); } print "@array\n"; #=> blue #00f green #0f0 red #f00
複雑。
キーでソート。