• ベストアンサー

占いのPHPを作成中ですが・・・

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

こんな感じにすればということ。 節分以前は前の年って処理はしてないけど。 $kyusei = array("四緑木","三碧木","二黒土","一白水","九紫火","八白土","七赤金","六白金","五黄土"); $year = 1970; print $kyusei[($year - 1924) % 9]."星";

yuuka55
質問者

お礼

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

その他の回答 (3)

回答No.3

これって九星? だったら、9つのパターンの繰り返しなんで 求めたい年から基準の年を引いた数を 9で割った余りが配列のインデックスになるような 配列つくればよいかと。 ただ、節分の日付って、年によって違うよね。 それを判定するロジックも組まないと いけないと思うんだけど。

yuuka55
質問者

お礼

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

yuuka55
質問者

補足

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

  • jxt
  • ベストアンサー率48% (42/86)
回答No.2

ちょっとミスった $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; }

yuuka55
質問者

お礼

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

  • jxt
  • ベストアンサー率48% (42/86)
回答No.1

下手なやり方で。 $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; // 次の年へ } 色々やり方はあるはずなので、考えてみるとおもしろいかも。 ちなみに読みやすくするために先頭に全角スペースを入れてるので コピペしても動きません。

yuuka55
質問者

お礼

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

関連するQ&A