カテゴリー「PHP」の6件の記事

2010.08.18

PHP、smarty、javascript。。。疲れた。。

いや、javascriptはいいんだけど、、PHPとsmartyが辛い。

PHPのハッシュ(連想配列)はarray['foo']なんだけど、なんでsmartyはarray.fooなんだろう。
foreachとかの文法も統一して欲しいなぁ。。。

変数の代入もイコール演算子でできないし。


今日のPHP。

mysqli_insert_idっていう凄い関数を見つけた。

色々と凄くてどう突っ込むか迷うけど、まあ、そもそも「直前のクエリの値」ってあたりにバグの温床の恐怖を感じるけれども、っていうか、関数の名前がmysqliってmysql依存っていうか、auto increment依存というか、、まあ、そんなのは置いておいて、

クエリが AUTO_INCREMENT の値を更新しなかった場合は ゼロを返しま

あ、そこゼロなんだ。

もし数値が int の最大値をこえた場合、mysqli_insert_id() は文字列で結果を返します

あ、そこ文字列になっちゃうんだ。

ということで、mysqli_insert_idを使うときは

・戻り値がそもそも数字か文字列かをチェック
・戻り値が0じゃないかどうかをチェック

って二つのチェックをしないといけない。
っていうか、どっちも、素直に例外とかfalseを返してくれればいいんじゃないだろうか。

↓1日1ポチッとをお願いします!励みになります!
ポチっとよろしく!

| | コメント (0) | トラックバック (0)

2010.07.06

phpでperlのprint Data::Dumper($data);相当の一行。

file_put_contents('php://stderr', var_export($data, true));

これでApacheのエラーログに出る。

↓1日1ポチッとをお願いします!励みになります!
ポチっとよろしく!

| | コメント (0) | トラックバック (0)

2010.05.14

PHPのparse_url関数がよくわからない。

http://php.net/manual/ja/function.parse-url.php


不完全な URL であっても受け入れられます
・・(中略)・・
完全におかしな形式の URL については、parse_url() は FALSE を返し、E_WARNING を発生します

不完全なURLと完全におかしな形式のURLの違いは何なんだろうか。。


この関数は相対 URL では動作しません。

と書いてあるから、先頭にhttpのあるなしなのかな??ならばでもそう書いて欲しいなぁ。


あと、


パラメータ:URL: パースする URL。無効な文字は _ に置換されます。

無効な文字ってどういう意味なんだろうか??パラメーターの説明なのに、_に置き換えられる???
戻り値が_に置き換えられる???

| | コメント (0) | トラックバック (0)

2010.05.13

PHPで配列の要素数を数えるためのメソッド、count, size_ofは配列じゃなくても「1」や「0」を返すので注意が必要。

なんかの間違いで、配列じゃない変数を配列のように扱ってしまった場合、
例えば、forループ文を書いたときに、

for($i=0; $i<count($not_array); $i++){
$not_array[$i];
}

ってやると、countが1を返してしまうので、$not_array[$i];のところまで実行されてしまう。
そうすると、何でエラーが表示されたのかが??の状態になってしまう。

また、必ず1を返すわけではなくて、NULLの場合は0を返す。

-1とかが返ってくると良いと思うんだけど、、っていうか、例外が発生して欲しい。

PHP: count - Manual

もし var が配列もしくは Countable インターフェースを実装したオブジェクトではない場合、 1 が返されます。 ひとつ例外があり、var が NULL の場合、 0 が返されます。

| | コメント (1) | トラックバック (0)

PHPの配列(Array)は連想配列(Hash)の可能性がある。

echo $array

ってやったら
Arrayって表示されたからfor文でくるくる回したら上手く動かない。
具体的には、

PHP Notice: Undefined offset: 0 in ....

と表示される。
うーん、、なんでだろう、、

と思ったら、実は連想配列でしたというオチ。

困ったときはとりあえず、

print_r $array

ってやってみて、中身をよく確認しよう。

| | コメント (0) | トラックバック (0)

PHPのprint_rその変数がなんなんなのか、とにかく中身を詳細に知りたいときに使う便利なメソッド。

perlで言うところの
print Dumper

rubyで言うところの
pp

のPHPバージョンを知りたかった。

print_r

らしい。

print_r()関数/PHP関数リファレンス

Arrayの中身の区切り文字(カンマ)が表示されないんだなぁ。

| | コメント (0) | トラックバック (0)