はい、出してます。私です。
配列じゃねーよ的なエラーを出してしまうことがあります。
なんらかの条件分岐だったりなんやらで配列じゃないとき。
テスト不足とも言う。
Warning: Wrong datatype for second argument in call to in_array
今更今更で本当に恥ずかしい・・・・
ちゃんと宣言していれば問題なし!という目からうろこ
$hoge = array();
PHPはいきなり変数を使っても怒られないので甘えてる自分がいました。
これからは気を引き締めて向きあいたいと思います。以上です!
2014年1月27日月曜日
2014年1月12日日曜日
備忘録 画像の入っているフォルダを探して画像を一覧表示。
一つのフォルダだけではなく、その下にある階層のフォルダも探します。
使わせて頂いたのは
こちらのサイトのスクリプトと
http://blog.livedoor.jp/qoozy/archives/52547714.html
こちらのサイトのコード。
http://php-archive.net/php/file-tree/
まず、上のサイトを見ながらimage.phpや画像フォルダの設定をします。
一旦保存して、自分の環境で動くか確認。
イメージフォルダが一つで、その中に直接画像が入っている場合は
これだけで十分です。
背景色変えたり表示サイズ変えたりもできるので
かなり有用なツールだと思います。
ただ、今回の環境が
「階層化されたフォルダ内での画像全て」だったので、
下のサイトのソースを追加します。
これで配列に入ったパスをarray_uniqueで重複削除、
パスをGETで渡すようにしてループで回します。
これなら画像フォルダが増えても大丈夫。
ただ、画像の入っているフォルダパスしか取らないので、
先にフォルダだけを作っておく場合だと
全部の画像フォルダ名までは分からないです。
あとは、フォルダが増えた時用に
適当な数で改行するようにしてもいいかもしれないです。
使わせて頂いたのは
こちらのサイトのスクリプトと
http://blog.livedoor.jp/qoozy/archives/52547714.html
こちらのサイトのコード。
http://php-archive.net/php/file-tree/
まず、上のサイトを見ながらimage.phpや画像フォルダの設定をします。
一旦保存して、自分の環境で動くか確認。
イメージフォルダが一つで、その中に直接画像が入っている場合は
これだけで十分です。
背景色変えたり表示サイズ変えたりもできるので
かなり有用なツールだと思います。
ただ、今回の環境が
「階層化されたフォルダ内での画像全て」だったので、
下のサイトのソースを追加します。
これで配列に入ったパスをarray_uniqueで重複削除、
パスをGETで渡すようにしてループで回します。
これなら画像フォルダが増えても大丈夫。
ただ、画像の入っているフォルダパスしか取らないので、
先にフォルダだけを作っておく場合だと
全部の画像フォルダ名までは分からないです。
あとは、フォルダが増えた時用に
適当な数で改行するようにしてもいいかもしれないです。
2013年12月16日月曜日
PHP備忘録 フォルダごとまるっと削除する。
アップロード系のツールや
ファイルを自動生成するプログラムがあると、
生成されたファイル・フォルダがapache所有になっていて
こちらから削除ができない、なんて事がたまにあります。
パス間違えてフォルダ作っちゃった時なんてもう・・・
そんな時は、phpでプログラムを走らせればOKです。
コマンドでもできるのですが、どうにも苦手なもんで。
※フォルダの削除については自己責任でお願い致します。
phpの場合、フォルダをまるっと削除する事はできません。
フォルダの中身をunlinkで一個ずつ消してから、
rmdirでフォルダを削除する流れになります。
ファイルを自動生成するプログラムがあると、
生成されたファイル・フォルダがapache所有になっていて
こちらから削除ができない、なんて事がたまにあります。
パス間違えてフォルダ作っちゃった時なんてもう・・・
そんな時は、phpでプログラムを走らせればOKです。
コマンドでもできるのですが、どうにも苦手なもんで。
※フォルダの削除については自己責任でお願い致します。
phpの場合、フォルダをまるっと削除する事はできません。
フォルダの中身をunlinkで一個ずつ消してから、
rmdirでフォルダを削除する流れになります。
2013年12月14日土曜日
モールス信号を作ってくれるサイトが地味にすごい。
仕事中偶然見つけたサイト。
デザインがレトロ感あって好みなのですが、
何がすごいって
「入力した文章(英語)をモールス信号にしてくれる」
困った時にはここで調べれば即変換してくれます!
・・・それだけ、なんだと思います。
でも、真ん中の機械がちゃんと動くんですよ!
トントンツーって。
こういう細かい仕掛け大好きです。
さすがにこれで業務メール送る訳にはいかないけれど
なんか、使えないですかねー。
そんな素敵サイトはこちら。
Morse Node
2013年10月23日水曜日
CSSで何気なく使っているコメントアウトの落とし穴。
http://www12.plala.or.jp/costellazione/css-make/write.html
最近知りました、お恥ずかしい。
どうやら全角がダメなのはCSSだけっぽいですね。
今までは奇跡的に全角を入れてなかったようです。すごい。
あと、PHPとかJavascriptでは普通に使えてる、
これも、CSSには効かないので注意。
一行コメントと言えばこれ、って感じがするけど
CSSで使えるのは「/* コメント */」のみなんですね。
ちなみに、他の言語でのコメントアウト一覧はこちら。
http://web-terminal.blogspot.jp/2013/04/commentout.html
こんなに種類あるのか・・・。
最後に、簡単に切り替えられるコメント欄の書き方。
http://qiita.com/Hiraku/items/de8c44520d5aa9268ac7
この発想はなかった。
2013年10月19日土曜日
とあるページの作成で覚えた小技。
ブログのように各パーツをincludeで表示させているのですが、
頻繁にアクセスされる箇所なので、
phpではなくキャッシュファイルにしてincludeさせようと思いました。
変数にいれてファイル書き込みで十分いけるのですが、
とある箇所で再帰関数を使っているため
http://hayashikejinan.com/webwork/php/492/
こちらのブログを参考にさせて頂きました。
ob_start();以下の文章を
ob_get_contents();で返すそうです。
最後には必ず、ob_end_clean();でバッファをクリアしましょう。
http://www.php.net/manual/ja/function.ob-get-contents.php
簡単なコードにするとこんな感じです。
再帰の処理がob_start();より前にあっても使えます。
実際は中でSQL発行して再帰してうんぬんがあるのですが、
それでも普通にhtmlを作成してくれました。感動。
ブログのように各パーツをincludeで表示させているのですが、
頻繁にアクセスされる箇所なので、
phpではなくキャッシュファイルにしてincludeさせようと思いました。
変数にいれてファイル書き込みで十分いけるのですが、
とある箇所で再帰関数を使っているため
http://hayashikejinan.com/webwork/php/492/
こちらのブログを参考にさせて頂きました。
ob_start();以下の文章を
ob_get_contents();で返すそうです。
最後には必ず、ob_end_clean();でバッファをクリアしましょう。
http://www.php.net/manual/ja/function.ob-get-contents.php
簡単なコードにするとこんな感じです。
再帰の処理がob_start();より前にあっても使えます。
実際は中でSQL発行して再帰してうんぬんがあるのですが、
それでも普通にhtmlを作成してくれました。感動。
2013年10月11日金曜日
PHP arrayどんなときに使うかその2 日ごとや月ごとに表に出したい 「日付ごとにどの商品が何個売れたか」など
前回は全体で何個売れたかを表で出力する方法を書きましたが
今回は日付ごとにどの商品がどれくらい売れたかを表にしたいと思います。
1回ループを多くまわします。
商品以外、日付以外でももちろん応用可能で、データベースやファイルから取得するタイミングで表示することもありますが(ループの中でぐるぐる表示)何らかの形を変えて表示するときに使ったりします。
最終的に出したい形は以下の通り
商品テーブル
売上テーブル
実行結果は上の表の通りになりました。
ほかに日付ごと、月ごとの予約件数とか日付にかかわらずあとで加工するとき一旦配列にいれておくという使い方をしています。
1回ループを多くまわします。
商品以外、日付以外でももちろん応用可能で、データベースやファイルから取得するタイミングで表示することもありますが(ループの中でぐるぐる表示)何らかの形を変えて表示するときに使ったりします。
最終的に出したい形は以下の通り
| 2013年10月 日付 | 1日 | 2日 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 省略・・・ | 29 | 30 | 31 | 合計 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 売り上げ | やくそう | 5 | 4 | 2 | 16 | 10 | 9 | 3 | 4 | 3 | 1 | … | … | 249 | |||||
| どくけしそう | 6 | 5 | 2 | 9 | 0 | 7 | 3 | 4 | 3 | 10 | … | … | 89 | ||||||
| キメラのつばさ | 1 | 10 | 9 | 13 | 2 | 0 | 3 | 0 | 5 | 6 | … | … | 176 | ||||||
商品テーブル
| 商品コード | 商品名 |
|---|---|
| 1 | やくそう |
| 2 | どくけしそう |
| 3 | キメラのつばさ |
売上テーブル
| 売上日付 | 商品コード | 数量 |
|---|---|---|
| 2013-10-01 | 1 | 5 |
| 2013-10-01 | 2 | 6 |
| 2013-10-02 | 3 | 25 |
実行結果は上の表の通りになりました。
ほかに日付ごと、月ごとの予約件数とか日付にかかわらずあとで加工するとき一旦配列にいれておくという使い方をしています。
2013年10月10日木曜日
PHP arrayどんなときに使うかその1 日ごとや月ごとに表に出したい 「日付ごとに何個売れたか」など
今回は(商品の種類は関係なく)全体で何個売れたかなどの場合に使います。
商品以外、日付以外でももちろん応用可能で、データベースやファイルから取得するタイミングで表示することもありますが(ループの中でぐるぐる表示)何らかの形を変えて表示するときに使ったりします。
最終的に出したい形は以下の通り
| 2013年10月 日付 | 1日 | 2日 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 省略・・・ | 29 | 30 | 31 | 合計 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 売り上げ | 11 | 25 | 7 | 30 | 12 | 20 | 11 | 19 | 5 | 10 | … | … | 510 |
商品テーブル
| 商品コード | 商品名 |
|---|---|
| 1 | やくそう |
| 2 | どくけしそう |
| 3 | キメラのつばさ |
売上テーブル
| 売上日付 | 商品コード | 数量 |
|---|---|---|
| 2013-10-01 | 1 | 5 |
| 2013-10-01 | 2 | 6 |
| 2013-10-02 | 3 | 25 |
実行結果は上の表の通りです。
2013年10月1日火曜日
いつか何かで使ってみたい、Jqueryで隠しコマンドのページ
ページにちょっとしたお遊び要素を入れる時に、
普通に隠しリンクを仕込むだけだとつまらない。
何か変わったギミックはないものか・・・
と探していると、いいのがありました。
Cheat Coadプラグインというものを使えば、
誰でも簡単にページに仕込めるそうです。
※Jqueryは既にあるものとします。
まずは、こちらからプラグインをダウンロード。
http://www.trovster.com/lab/plugins/cheat-code/
次に、仕込むページのHeader部分に以下を記述します。
たったこれだけ!
code:の後ろは適宜調べてオリジナルコマンドにしてもOKです。
コードを調べる時は、下記のサイトが便利。
http://himajin.moo.jp/javascript/keycode.html
codeの行を消すと、デフォルトのコナミコマンド(↑↑↓↓←→←→BA)になります。
alertじゃなくて、ページ遷移もいいかと思います。
必須機能ではないけれど、こういうお遊び要素があってもいいですよね。
普通に隠しリンクを仕込むだけだとつまらない。
何か変わったギミックはないものか・・・
と探していると、いいのがありました。
コナミコマンドをページに仕込む。
Cheat Coadプラグインというものを使えば、
誰でも簡単にページに仕込めるそうです。
※Jqueryは既にあるものとします。
まずは、こちらからプラグインをダウンロード。
http://www.trovster.com/lab/plugins/cheat-code/
次に、仕込むページのHeader部分に以下を記述します。
たったこれだけ!
code:の後ろは適宜調べてオリジナルコマンドにしてもOKです。
コードを調べる時は、下記のサイトが便利。
http://himajin.moo.jp/javascript/keycode.html
codeの行を消すと、デフォルトのコナミコマンド(↑↑↓↓←→←→BA)になります。
alertじゃなくて、ページ遷移もいいかと思います。
必須機能ではないけれど、こういうお遊び要素があってもいいですよね。
2013年9月26日木曜日
PHP 備忘録 直前にINSERTしたIDをしりたい
直前に追加したシーケンスをしりたいときに便利です。
PostgreSQLでデータをINSERTしたとき関連テーブルにもINSERTしたい。
そのとき最初のテーブルのSERIALを知りたいが
その値は自動で振られているのでわからないときに使います。
毎回調べるのでメモ
①データをINSERT
table1
id :SERIAL
name : text
INSERT INTO table1 (name) VALUES ("test")
(idのデータ型にはSERIALを設定しているので自動で挿入されます。)
②シーケンスの値を取得
$sql = "SELECT currval(table1_id_seq) as val";
$rtns = pg_query($connect,$sql);
$val = pg_fetch_result($rtns,"val");
これで調べることができました!
シーケンス操作関数
http://www.postgresql.jp/document/8.4/html/functions-sequence.html
PostgreSQLでデータをINSERTしたとき関連テーブルにもINSERTしたい。
そのとき最初のテーブルのSERIALを知りたいが
その値は自動で振られているのでわからないときに使います。
毎回調べるのでメモ
①データをINSERT
table1
id :SERIAL
name : text
INSERT INTO table1 (name) VALUES ("test")
(idのデータ型にはSERIALを設定しているので自動で挿入されます。)
②シーケンスの値を取得
$sql = "SELECT currval(table1_id_seq) as val";
$rtns = pg_query($connect,$sql);
$val = pg_fetch_result($rtns,"val");
これで調べることができました!
シーケンス操作関数
http://www.postgresql.jp/document/8.4/html/functions-sequence.html
2013年9月22日日曜日
PHP⇒HTMLでキャッシュページ作成
MySQLとPHP5で、ブログのような投稿型のコンテンツを作成。
アクセスが増えたら表示のたびにPHPで読みに行って負荷がかかるかも、てことで
キャッシュページを作れば良いのではないか、との啓示を受けました。
サーバーやhtaccessは触らない方向で行きたいので、
記事を作成すると同時にキャッシュ用のHTMLを作成する事にしました。
ざっくりとした作成方法は以下の通りです。
MySQLでは、INSERTした直後の最新IDを取得する時に
LAST_INSERT_ID()
を使うのですが、今回はPHPで使用するため
mysqli_insert_id();
こちらを使います。
この関数はAUTO_INCREMENT属性(シリアルとか)を持つテーブルで
UPDATEとかINSERTをした場合に、生成された最新のIDを返します。
直前のクエリでUPDATE、INSERTが無ければゼロを返します。
http://www.php.net/manual/ja/mysqli.insert-id.php
なんて便利。
表示する時は、リンク先をとかにして、
view.php内でGETした記事番号のHTMLを呼び出します。
iframeの中に表示してもよし、includeで読み込むもよし。
これで少しでも軽減されたら嬉しいなあ。
でも、もっとスマートな方法がありそうですね。
ちなみに、PEARのライブラリとかhtaccessをいじる方法だと
下記のリンクが参考になるかもしれないです。
http://phpspot.org/blog/archives/2011/03/webphp_1.html
http://damepg.doorblog.jp/archives/7229518.html
http://codezine.jp/article/detail/1027?p=1
アクセスが増えたら表示のたびにPHPで読みに行って負荷がかかるかも、てことで
キャッシュページを作れば良いのではないか、との啓示を受けました。
PHP⇒HTMLでキャッシュページ作成
サーバーやhtaccessは触らない方向で行きたいので、
記事を作成すると同時にキャッシュ用のHTMLを作成する事にしました。
ざっくりとした作成方法は以下の通りです。
MySQLでは、INSERTした直後の最新IDを取得する時に
LAST_INSERT_ID()
を使うのですが、今回はPHPで使用するため
mysqli_insert_id();
こちらを使います。
この関数はAUTO_INCREMENT属性(シリアルとか)を持つテーブルで
UPDATEとかINSERTをした場合に、生成された最新のIDを返します。
直前のクエリでUPDATE、INSERTが無ければゼロを返します。
http://www.php.net/manual/ja/mysqli.insert-id.php
なんて便利。
表示する時は、リンク先をとかにして、
view.php内でGETした記事番号のHTMLを呼び出します。
iframeの中に表示してもよし、includeで読み込むもよし。
これで少しでも軽減されたら嬉しいなあ。
でも、もっとスマートな方法がありそうですね。
ちなみに、PEARのライブラリとかhtaccessをいじる方法だと
下記のリンクが参考になるかもしれないです。
http://phpspot.org/blog/archives/2011/03/webphp_1.html
http://damepg.doorblog.jp/archives/7229518.html
http://codezine.jp/article/detail/1027?p=1
2013年9月18日水曜日
PHP 備忘録 includeとrequireの違い
ファイルの中でもたまに混在してたりするこれら。
ここで改めて確認です。
ファイルがない場合でも処理を続行します。
ファイルがない場スクリプトの処理がそこで止まってしまう。
ループの中毎回異なるファイルを読み込む場合はincludeを使う
同じのは大丈夫か今度検証しよう
参考URL
http://www.geocities.jp/web9star/php_applied/include.html
http://php.net/manual/ja/function.include.php
http://www.php.net/manual/ja/function.require.php
ここで改めて確認です。
include
ファイルを見つけられない場合にwarningを発行します。ファイルがない場合でも処理を続行します。
require
ファイルを見つけられない場合にfatal errorを発行する点が異なります。ファイルがない場スクリプトの処理がそこで止まってしまう。
ループの中毎回異なるファイルを読み込む場合はincludeを使う
同じのは大丈夫か今度検証しよう
参考URL
http://www.geocities.jp/web9star/php_applied/include.html
http://php.net/manual/ja/function.include.php
http://www.php.net/manual/ja/function.require.php
2013年9月14日土曜日
PHP備忘録 こっちにあってこっちにない
配列の差分を取得するときはarray_diffを使います。
array_diff添え字を振り直すarray_values
実行結果をみると添え字の数字が[2]のままで[0]ではない。for文でまわしたりするとき不便なので添え字を振り直します。
array_values
振りなおされました~
かゆいところに手が届きます!
2013年9月12日木曜日
PHPでゼロサプレスとゼロパディング
PHPでゼロサプレスとゼロパディングをする方法です。
先頭の0を削除したいときにゼロサプレスを。
先頭を0で埋めたい時にゼロパディングを使用します。
とても簡単ですが、ゼロサプレスは頻繁に使うものではないのでたま~に忘れたりします。
例
$ymd = date("Y-m-d"); //現在日時をYYYY-MM-DDの形式で取得
list($y, $m, $d) = explode("-", $ymd); //何か理由があり年月日を分割
$zerosuppress = intval($m); //何か理由があり、先頭の0を削除したいとき
$zeropadding = sprintf("%02d", $zerosuppress); //やっぱり頭に0を付けたいとき
ね?簡単でしょ?
2013年8月31日土曜日
PHPからMecabを使う
読み・品詞などを取得する場合はこのように。
単純に文字列を配列として取得する場合は下記のようにする。
ここでいくつか問題が。
電話番号など連続した数字をわかち書きすると「0」「1」など1文字ずつ分かれてしまいます。
設定ファイルを変更すればいいようなのですが、現状それができない状態です。
正規表現でやろうかなあ。
参考URL
http://d.hatena.ne.jp/knaka20blue/20110704/1309767917
単純に文字列を配列として取得する場合は下記のようにする。
ここでいくつか問題が。
電話番号など連続した数字をわかち書きすると「0」「1」など1文字ずつ分かれてしまいます。
設定ファイルを変更すればいいようなのですが、現状それができない状態です。
正規表現でやろうかなあ。
参考URL
http://d.hatena.ne.jp/knaka20blue/20110704/1309767917
2013年8月17日土曜日
CentosにMecabをインストール
検索ツールを作成したくいろいろ調べたところ「MeCab」なるものが。
名前に魅かれて早速インストールを試します。
Mecabとは
wgetするとき参考サイトのURLだとエラーが起きたり・・
いろいろ試してたどり着きました。
流れはこうです。
手順1:MeCabインストール
手順2:辞書データインストール
手順3:php-mecabインストール
CentOS 5.9
PHP Version 5.3.3
# cd /usr/local/src/
# wget http://mecab.googlecode.com/files/mecab-0.98.tar.gz
# tar xvfz mecab-0.98.tar.gz
# cd mecab-0.98
# ./configure --enable-utf8-only
# make
# make install
# ldconfig
# cd /usr/local/src/
# wget http://iij.dl.sourceforge.jp/naist-jdic/48487/mecab-naist-jdic-0.6.3-20100801.tar.gz
# tar xvfz mecab-naist-jdic-0.6.3-20100801.tar.gz
# cd mecab-naist-jdic-0.6.3-20100801
# ./configure --with-charset=utf8
# make
# make install
# vi /usr/local/etc/mecabrc
(編集)
;dicdir = /usr/local/lib/mecab/dic/ipadic コメントアウト
dicdir = /usr/local/lib/mecab/dic/naist-jdic 追加
# mecab
mecabインストール完了!
参考URL
http://d.hatena.ne.jp/akiiiiiiiio/20110412/1302605979
# wget https://github.com/downloads/rsky/php-mecab/php-mecab-0.5.0.tgz
# tar xzvf php-mecab-0.5.0.tgz
# cd php-mecab-0.5.0
# yum install php53-devel
# phpize
# ./configure -with-php-config=/usr/bin/php-config -with-mecab=/usr/local/bin/mecab-config
# make
# make install
php.ini追加
extension=mecab.so
apacheの再起動
phpinfo() でmecabの項目が表示されてたら完了
表示されてるー(^0^)/
参考URL
http://corechika.com/2013/04/
http://d.hatena.ne.jp/Kmusiclife/20101020/1287512977
次回は使い方を書きまーす。
名前に魅かれて早速インストールを試します。
Mecabとは
wgetするとき参考サイトのURLだとエラーが起きたり・・
いろいろ試してたどり着きました。
流れはこうです。
手順1:MeCabインストール
手順2:辞書データインストール
手順3:php-mecabインストール
環境
CentOS 5.9
PHP Version 5.3.3
MeCab0.98インストール
# cd /usr/local/src/
# wget http://mecab.googlecode.com/files/mecab-0.98.tar.gz
# tar xvfz mecab-0.98.tar.gz
# cd mecab-0.98
# ./configure --enable-utf8-only
# make
# make install
# ldconfig
辞書データインストール
# cd /usr/local/src/
# wget http://iij.dl.sourceforge.jp/naist-jdic/48487/mecab-naist-jdic-0.6.3-20100801.tar.gz
# tar xvfz mecab-naist-jdic-0.6.3-20100801.tar.gz
# cd mecab-naist-jdic-0.6.3-20100801
# ./configure --with-charset=utf8
# make
# make install
# vi /usr/local/etc/mecabrc
(編集)
;dicdir = /usr/local/lib/mecab/dic/ipadic コメントアウト
dicdir = /usr/local/lib/mecab/dic/naist-jdic 追加
# mecab
mecabインストール完了!
参考URL
http://d.hatena.ne.jp/akiiiiiiiio/20110412/1302605979
php-mecabインストール
# wget https://github.com/downloads/rsky/php-mecab/php-mecab-0.5.0.tgz
# tar xzvf php-mecab-0.5.0.tgz
# cd php-mecab-0.5.0
# yum install php53-devel
# phpize
# ./configure -with-php-config=/usr/bin/php-config -with-mecab=/usr/local/bin/mecab-config
# make
# make install
php.ini追加
extension=mecab.so
apacheの再起動
phpinfo() でmecabの項目が表示されてたら完了
表示されてるー(^0^)/
参考URL
http://corechika.com/2013/04/
http://d.hatena.ne.jp/Kmusiclife/20101020/1287512977
次回は使い方を書きまーす。
登録:
投稿 (Atom)


