CGIの改造(中級編3)です。今回は配列です。
尚、私もあまりわかってないので、勉強しながら書いてます。。。
配列とは、簡単に言うと、ひとつの変数に複数の値をぶち込んだものと考えてください。
実際見たほうが早いですね。
@hairetu = ('a', 'b', 'c', 'd'); |
見ての通り、「@hairetu」の中には、「a,b,c,d」と言う4つの値が入ってます。
この値を取り出すときですが、
$hairetu[1] |
というように、変数に「 [ ] 」を付けて、中に数字で指定してやります。
ここで注意ですが、配列は0から数えますので、上記の「$hairetu[1]」だと、
「b」と言う値をとります。
値の代入や表示の仕方は、
$xx[0] = 1; → 0番目に数値1を代入 $xx[2] = 'cc'; → 2番目にccを代入 @xx = ( "11", "abc" ); → 配列xxに11,abcを代入 @xx[2..3] = ( "22", "ee" ); → 2〜3番目に22,eeを代入 print @xx; → 配列の中身すべてを表示 print $xx[0]; → 0番目を表示 print @xx[0..2]; → 0〜2番目を表示 $#変数名 は、@変数名 の配列の最後の添え字(個数から1をひいたもの)を表わします。 @hairetu = ( "a", "b", "c", "d" ); print "$#hairetu\n"; → 3と表示されます。 |
このようにやります。
また、配列には操作するための関数がありますので、一応紹介します。
$x = shift(@xx); → @xxの最初の値を取り除いて、$xに格納する(@xxは最初の値を取り除いたものを返す) $x = pop(@xx); → 最後の値を取り除く(最後以外の値を返す) unshift(@xx1, $xx); → 配列@xx1の最初に値$xxを追加する push(@xx1, $xx); → 配列@xx1の最後に値$xxを追加する push(@xx1, @xx2); → @xx1 の後ろに @xx2 の値を追加する splice(@xx, 3, 2); → $xx[3..4](2個)を取り除く(取り除いた値以外の値を返す) reverse(@xx); → @xxの値を逆順にしたものを返す @x = split(/,/, $s); → 文字列$sを","で分割してその配列を返す foreach $i (@xx) {print "$i\n";} → すべての配列の値について処理を行う |
ここで、配列を使ったひとつの例を見てみます。
曜日を代入するときに使った例です。
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time); ++$mon; @youbi = ('日曜', '月曜', '火曜', '水曜', '木曜', '金曜', '土曜'); $data = "$man/$mday ($youbi[$wday])"; |
こうすると、前に紹介した「if ($wday == 0) {..」などとやらなくても楽です。
配列は使いどころが難しい(と言うか複雑と言うか・・・)ので、
いろいろと研究してみてください。
配列が使えるといろいろなことができます。がんばりましょう。
なんか今回は改造と言うより基礎知識みたいな感じだなぁ。。。
常識だと思いますが、CGIの改造は各自の責任においてやってください。
どんなことがあっても、私にふらないでください。