みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2004-02-26 20:48:20

QNo.790724

困ってます

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

こんな感じにすればということ。
節分以前は前の年って処理はしてないけど。

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

$year = 1970;

print $kyusei[($year - 1924) % 9]."星";

投稿日時 - 2004-03-01 10:00:17

お礼

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

投稿日時 - 2004-03-01 18:23:31

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

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

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

投稿日時 - 2004-02-27 12:49:04

補足

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

投稿日時 - 2004-02-29 13:53:21

お礼

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

投稿日時 - 2004-02-29 13:59:34

ANo.2

jxt

ちょっとミスった

$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;
}

投稿日時 - 2004-02-27 11:05:22

お礼

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

投稿日時 - 2004-02-29 13:51:35

ANo.1

jxt

下手なやり方で。

$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; // 次の年へ
}

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

ちなみに読みやすくするために先頭に全角スペースを入れてるので
コピペしても動きません。

投稿日時 - 2004-02-27 10:49:10

お礼

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

投稿日時 - 2004-02-29 13:52:53

あなたにオススメの質問