タグ:PHP ( 6 ) タグの人気記事

PHPの不具合?

PHPでSNSアプリを制作しているのだが、
数値的に妙な現象が起こったので、備忘録。

経験値計算など、アプリには必ず数値計算が必要なわけだが、
そういうところで、小数点以下が発生した場合、通常は、切捨てだ。

(int) ってキャストすれば良いだけで(言語によるが)非常に楽なんだが、
なぜか今回の仕様を作ってる奴は、仕様書のいたるところに「切り上げ」と書いている。

なぜだ?

まぁいい、PHPは、 ceil() という切り上げ関数があるので、それ使えばいいだろ。
というわけで組み込んでいたのだが…。

ceil(50 * 1.1) が、56となるのだ。

計算結果は、ぴったり55のはずだが、ceilは引数を float型とみなすので、
小数点以下の計算で、なにやら変なことをやっている結果なのだろう。

#コンピュータで 0.1を表現することができないと知ったときは、驚いた。

ま、そんなわけで、切り上げ計算を全て駆逐。
意味無く余計なことはスンナってことだな。
[PR]
by miries | 2012-03-14 15:50 | ゲームを作る

apacheの設定

これは、SNSを一人で作れと言われたので、四苦八苦しながらの制作記録である。

今回は少し別の話題。
検索エンジンのクローラー対策として、クエリー文字を使用せず、
ディレクトリの一部と見なす手法がある。

例えば、今月の日記一覧を見るURLとして、以下があったとしても、
http://hoge.jp/diary/index.php?year=2012&month=1
検索エンジンには、
http://hoge.jp/diary/index.php
としか、認識されない。
なので、
http://hoge.jp/diary/2012/1/
という架空のURLを設定し、一番上のURLに変換するのだが…。

やり方を聞いて、自サイトの日記に活用していたにも関わらず、
やり方をすっかり忘れていた。
自サイトの.htaccess を確認して、ようやく思い出した。

っていうか、単に RewriteEngine を利用してるだけやん。

SNS用のPHPのフレームワークで、がんがん利用しているのに、
まったく覚えてないとは…酷すぎる(笑)

まぁ、転送する際のRewriteRuleのメインって正規表現だから、覚えにくいってのあるが。

RewriteEngineって、すげー便利だな。
[PR]
by miries | 2012-01-03 23:50 | ゲームを作る

foreachとPHP

もうずっと ループは for を使っているのだが、
最近、 foreachを使い始めた。

使い勝手はいいのだが、今まで使って無かったので、
つい for と書いてしまい、しかも foreachの構文を中々覚えられん。

(php と smarty 併用してるので、混同してる>そんくらい覚えろ)

まぁ、それはさておき。

$hoge[$key][1] = "a";
$hoge[$key][0] = "b";

と定義したのを、foreachで回すと、

a
b

って表示されるのな。
添え字関係なく、ホントに定義した順なのか…。
ここはforとは違うわ。
[PR]
by miries | 2011-06-28 19:43 | ゲームを作る

PHPのコードブロックタグ

いまさらだが、PHPを記述する際に、

<?php
?>

がセットだと思っていたけど、
ファイル終端の

?>

は、いらないのか。

というか、requireする際はむしろ無いほうが良い、と聞いて、
マジか?と調べたら、

「そうすることで、意図しない空白が入るのを防げる」

というようなレベルの話だった。
セキュリティ的な問題じゃないならいいやー。
[PR]
by miries | 2011-03-31 12:11 | デジタル系

PHPで、JSON形式を扱う

なぜか最近やたらと見る機会が多くなったJSON形式。

以前は、その存在とはかすりもしなかったのに…。

で、この形式をPHPの配列にいれるには、

$data = json_decode($hoge, true);

これだけで、連想配列に入る。
基本関数だけで扱えるってのは、すごく便利だわ。
[PR]
by miries | 2011-03-23 15:27 | 備忘録

smartyと連想配列 (PHP)

最近は、サーバー側のプログラムもやっている。
いや、自鯖立てたりしてるし、もともとやってはいるんだけれども。

だけどフレームワークを使うのは初めてで、smartyも初めてである。
慣れれば楽そうだけど、覚えるまではね。

で、ちょくちょく行き詰っては、グーグル先生に聞いたりしている。
以前、改行含んだテキストをどうやったら表示できるんだ!
でお世話になったときは、

{$text|nl2br}

であっさり片付いた。

今回は連想配列の表示である。
調べたところによると、

 $hoge['key'] = 0;

を表示するには、

 {$hoge.key}

でいけるらしい。だか、しかし!
今私がやっているのは、日付にかかわるデータ処理。
そしてキーの値は、

 $hoge['2010/12/2'][0] = 0;

である。
当然のごとく、

 {$hoge.2010/12/2.0}

では、エラー(笑)
色々調べた挙句、一度、キーを別の変数に代入することで落ち着いた。

{assign var="val" value="2010/12/2"}
{$hoge.$val.0}

面倒じゃのう。
[PR]
by miries | 2010-12-02 17:34 | ゲームを作る