dポイントプレゼントキャンペーン実施中!

今PHPを習得中です。
ちんぷんかんぷんながらも取り合えずオリジナルを作成してみようと生きこんだものの。下記のソースの作り方が分かりません。何方かソースを教えて下さい。
●節分までは前年度、節分からは今年度。
例えば1970.2.2までは○○星に1970.2.3~1971.2.2の人は××星にしなさいというものです。左記のパターンが60年間続くのですが・・・
是非お力をお貸し下さい。

A 回答 (4件)

こんな感じにすればということ。


節分以前は前の年って処理はしてないけど。

$kyusei = array("四緑木","三碧木","二黒土","一白水","九紫火","八白土","七赤金","六白金","五黄土");

$year = 1970;

print $kyusei[($year - 1924) % 9]."星";
    • good
    • 0
この回答へのお礼

ありがとうございました。
自分なりに試行錯誤しながら、教えて頂いたソースを参考に活用させて頂きたいと思います。(^^)

お礼日時:2004/03/01 18:23

これって九星?


だったら、9つのパターンの繰り返しなんで
求めたい年から基準の年を引いた数を
9で割った余りが配列のインデックスになるような
配列つくればよいかと。

ただ、節分の日付って、年によって違うよね。
それを判定するロジックも組まないと
いけないと思うんだけど。

この回答への補足

そうです。九星です。
よくご存知ですね。本格的に行うと複雑になるなぁと思って、取りあえず節分と区切ったのです。
厚かましいのですが、もしお時間があれば例として一つソースを教えて頂きたいのですが、よろしくお願いします。せっかくご回答頂いたのに、それすらピンと頭に思い浮かばない位の初心者なのです。すみません。

補足日時:2004/02/29 13:53
    • good
    • 0
この回答へのお礼

返事が遅れてすみません。
ありがとうございました。

お礼日時:2004/02/29 13:59

ちょっとミスった



$belonging = array('○星','△星','×星','◇星','◎星','☆星'); // 順に60年分入れる

$origin = 1970; // 最初の年

// たとえば1975年1月1日生まれの人
$birthday = mktime(0,0,0,1,1,1975);

foreach($belonging as $data) {
 $target = mktime(0,0,0,2,2,$origin + $count); // 比較する日
 if ($birthday <= $target) { // 小さければ
  echo $belonging[$count];
  break; // 処理を抜ける
 }
 $count += 1;
}
    • good
    • 0
この回答へのお礼

お礼が遅れてすみません。参考になりました。
早く皆様のように質問されて答えられるようなプログラマーになれるよう努めたいと思います。
ありがとうございました。(^v^)

お礼日時:2004/02/29 13:51

下手なやり方で。



$belonging = array('○星','△星','×星','◇星','◎星','☆星'); // 順に60年分入れる

$origin = 1970;

// たとえば1975年1月1日生まれの人
$birthday = mktime(0,0,0,1,1,1975);

foreach($belonging as $data) {
 $target = mktime(0,0,0,2,2,$origin); // 比較する日
 if ($birthday <= $target) { // 小さければ
  $birthyear = date('Y',$birthday); // 年を分解
  echo $belonging[$birthyear - 1970]; // どこに所属してるのかな
  break; // 処理を抜ける
 }
 $origin += 1; // 次の年へ
}

色々やり方はあるはずなので、考えてみるとおもしろいかも。

ちなみに読みやすくするために先頭に全角スペースを入れてるので
コピペしても動きません。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2004/02/29 13:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!