のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,647,353人
昨日:no data人
今日:
最近の注目
人気の最安値情報

元スレくだすれPHP(超初心者用)6

php覧 / PC版 /
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

551 = :

データベースの統計情報みたいなやつとか
昨日何人が登録したとか、1ヶ月以上ログインしていないユーザーを
削除するとか
管理人しか使わない訳だし、例えばワード検索で自演XSSやSQLインジェクションができてもいいのかなと
やるには自分で不正コード打ち込まないといけないじゃない?

552 = :

打ち込まなきゃいいじゃない?

553 = :

だからいらないんじゃないのって

554 = :

じゃそれでいいんじゃないのって

557 = :

PHPというかもはや計算の問題なんですが、
$int = 500;
if ($int >= 568) { $lv = "Lv9"; }
elseif ($int >= 406) { $lv = "Lv8"; }
elseif ($int >= 278) { $lv = "Lv7"; }
elseif ($int >= 180) { $lv = "Lv6"; }
elseif ($int >= 108) { $lv = "Lv5"; }//5*5*2(50)+4*4*2(32)+3*3*2(18)+2*2*2(8)
elseif ($int >= 58) { $lv = "Lv4"; }//4*4*2(32)+3*3*2(18)+2*2*2(8)
elseif ($int >= 26) { $lv = "Lv3"; }//3*3*2(18)+2*2*2(8)
elseif ($int >= 8) { $lv = "Lv2"; }//2*2*2(8)
else { $lv = "Lv1"; }//0
echo "{$lv}<br>";
というソースを実行するとLv8<br>が出力されます。
これを
$lv = $int / (ごにょごにょ演算);
的な感じで1行(もしくは数行)にしたいのですが、計算式がわかりません…
$intと比較する数字はコメント部分の通りです。
どなたか教えていただけるとありがたいです。
アホな質問ですいません。

558 = :

無理に短くしないで関数にすればいいだけじゃん。

ロジックを整理するならともかく、書き方で短くするだけだと
あとで条件変更しにくくなるよ。

あと、個人的には、$int という変数名はinteger 一般みたい
で抵抗がある。

559 = :

forで引いていけばいいじゃん

561 = :

>>557

$int = 500;
$lv = levelcheck($int);
echo "{$lv}<br>";

function levelcheck($int){
if ($int >= 568) { $lv = "Lv9"; }
elseif ($int >= 406) { $lv = "Lv8"; }
elseif ($int >= 278) { $lv = "Lv7"; }
elseif ($int >= 180) { $lv = "Lv6"; }
elseif ($int >= 108) { $lv = "Lv5"; }//5*5*2(50)+4*4*2(32)+3*3*2(18)+2*2*2(8)
elseif ($int >= 58) { $lv = "Lv4"; }//4*4*2(32)+3*3*2(18)+2*2*2(8)
elseif ($int >= 26) { $lv = "Lv3"; }//3*3*2(18)+2*2*2(8)
elseif ($int >= 8) { $lv = "Lv2"; }//2*2*2(8)
else { $lv = "Lv1"; }//0
return $lv;
}

562 = :

>>561
頭わりぃw

563 = :

>>557
$intがlv0の時1*1*2だと都合がいいので($int+2)で考える。
自然数の自乗の和は1/6*(2n^3+3n^2+n)なので、3次方程式の解の公式に、
a=2,b=3,c=1,d=0を当てはめる。
3次方程式の解の公式は
こんなかんじ。
あとは自分でがんばってくれ。

564 = :

一つの公式作ってそれだけで同じ種類のあらゆる計算に当てはめるって、
誰もが一度はやってみるよなw

数学の世界ならいいけど、コンピュータだと演算方法が限られてるから、
そんなことやっても誰も得しないという。

565 = :

>>557が式が欲しいって言うからさ。

566 = :

for ($i = 1; $i < 10; $i++) {
print level($i)." ";
}

function level($level) {
for ($i = 1; $i <= $level; $i++) {
$return += (1 + $i) * (1 + $i) * 2;
}
return $return;
}

567 = :

みなさんレスありがとうございます。
一応求めていたのは>>563さんのものだったのですが、
アホなので理解できませんでしたw
$lvが増えていくと処理が遅くなりそうですが、
とりあえず現状は9までで間に合うので>>566さんので妥協しようかと思います。
ありがとうございました。

568 = :

つ変数の初期化
つpow

てか今の経験値で到達するレベルじゃなくて、今のレベルに必要な経験値を求める関数でいいの?

569 :

>>568
今の経験値からLvがいくつかなのを求めるということでしょ。

570 = :

あげちゃったすまそ

571 = :

だからそのために1~99まで毎回ループして比較するわけ?って言ってんの

572 = :

その関数で配列作っておいて
配列スキャンするのがいいんじゃないかな。

573 = :

99回のループが問題になるって、どんなんだよw
それに、3次の解の公式の方が重たいだろ、複素数出てくるし3乗根出てくるし。

574 = :

お前頭悪いだろ

575 = :

>>574
理解できないならそう言えばいいのに。

576 = :

この一連の流れがまったくわかってない人がいるね

578 = :

そのくらいで迷うなら本とバージョンもあわせたほうがいいかもね。

php.ini-development や php.ini-production の中見てみた?
あと一緒に添付されてるinstall.txtとかも読もうぜ

579 = :

応用の利かなさっぷりがすごいな…

580 = :

>>576
こうだろ。

568==571<今のレベルと次のレベルの経験値を保存しとけばいいだろ。
573<毎回99回のループで計算してなにか問題でも?

583 = :

俺も>572のようにLvと総経験値の対応テーブルを持っておくに一票。

・計算式の変更が起きる可能性は高いだろうから、簡単に差し替えられるようにした方が便利
・また、変更があった際に、Lv10とLv2で同じ計算式になるって保証もないので、式の一般化はしない方が便利
・毎回算出しても問題になるような量の計算でもないが、無駄な計算を回避できるに越した事はない

>563 のような式そのものをコードの中に組み込むのは
・後でどういう式で計算してるのか分かるように、ロジックをソースコードの中に書いておきたい
「ルチ将軍のLvは1300だ」とか「私の戦闘力は53万です」とか、データ量が多すぎで一覧表にしてられない
場合とかかな。

584 = :

ワンチップマイコンでもあるまいし今の時代に
ソースサイズ必死で小さくする理由があるんかねw

586 = :

PHP毎回起動とか何時代のインフラだよ

588 = :

>>583は「構造化のススメ」かな?
ソース分けて関数にするだけで>>583のような心配は無くなる。
あとは関数の中身を自分の解りやすいように書けばいい。

589 = :

どういう関数にして実際のスクリプトではそれをどう利用すると?

590 = :

CG やアクションでも、計算量多いのは予め計算済みの値を配列(テーブル)に入れるのが定石。

function is_next_level($current_level, $current_exp) {
 $level_table = array(
  '1'=>'8',
  '2'=>'26',
  '3'=>'58',
  '4'=>'108',
  '5'=>'180',
  '6'=>'278',
  '7'=>'406',
  '8'=>'568',
  '9'=>'768',
  );

 $next_level = $current_level + 1;

 if ($level_table[$next_level] < $current_exp) {
  return true;
 }
 else {
  return false;
 }
}

$level = 54;
$exp  = 2000;
if (is_next_level($level, $exp)) {
 print 'レベルがあがった。再帰でも使って何レベル上がったか返す関数は自分で書け';
}

591 = :

学校の課題とかでスマートに書きたいんじゃね?

592 = :

>>591
君、そうとう鈍いだろ

594 = :

わざわざDBに計算してもらうの?(驚愕

595 = :

経験値取得の度に DB アクセス…

596 = :

ソース書く人と仕様を決める人が同じオナニープログラムなら
>>566みたいなのでいいかもしれんが
将来的に拡張される可能性があるなら配列に入れるのが手っ取り早いね
もちろん、いずれは膨大な数になるとかならDBでもいいけど
高々10個足らずの整数値しか取らない変数にDBはありえないでしょ

598 = :

質問者不在の議論が続く…


←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について