- ベストアンサー
占いのPHPを作成中ですが・・・
今PHPを習得中です。 ちんぷんかんぷんながらも取り合えずオリジナルを作成してみようと生きこんだものの。下記のソースの作り方が分かりません。何方かソースを教えて下さい。 ●節分までは前年度、節分からは今年度。 例えば1970.2.2までは○○星に1970.2.3~1971.2.2の人は××星にしなさいというものです。左記のパターンが60年間続くのですが・・・ 是非お力をお貸し下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じにすればということ。 節分以前は前の年って処理はしてないけど。 $kyusei = array("四緑木","三碧木","二黒土","一白水","九紫火","八白土","七赤金","六白金","五黄土"); $year = 1970; print $kyusei[($year - 1924) % 9]."星";
その他の回答 (3)
- GuruGuru22
- ベストアンサー率51% (177/346)
これって九星? だったら、9つのパターンの繰り返しなんで 求めたい年から基準の年を引いた数を 9で割った余りが配列のインデックスになるような 配列つくればよいかと。 ただ、節分の日付って、年によって違うよね。 それを判定するロジックも組まないと いけないと思うんだけど。
お礼
返事が遅れてすみません。 ありがとうございました。
補足
そうです。九星です。 よくご存知ですね。本格的に行うと複雑になるなぁと思って、取りあえず節分と区切ったのです。 厚かましいのですが、もしお時間があれば例として一つソースを教えて頂きたいのですが、よろしくお願いします。せっかくご回答頂いたのに、それすらピンと頭に思い浮かばない位の初心者なのです。すみません。
- jxt
- ベストアンサー率48% (42/86)
ちょっとミスった $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; }
お礼
お礼が遅れてすみません。参考になりました。 早く皆様のように質問されて答えられるようなプログラマーになれるよう努めたいと思います。 ありがとうございました。(^v^)
- jxt
- ベストアンサー率48% (42/86)
下手なやり方で。 $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; // 次の年へ } 色々やり方はあるはずなので、考えてみるとおもしろいかも。 ちなみに読みやすくするために先頭に全角スペースを入れてるので コピペしても動きません。
お礼
ありがとうございました。
お礼
ありがとうございました。 自分なりに試行錯誤しながら、教えて頂いたソースを参考に活用させて頂きたいと思います。(^^)