PHP

配列の削除とインデックスの振り直し

PHP

配列の要素を削除するには unset() を使う。 $arr = array('a', 'b', 'c', 'd'); unset($arr[0]); ただ、 unset() はインデックスを振りなおしてくれない。 当然といえば当然かもしれない・・・。 なので、 array_values() で振り直す。 $arr2 = array_value…

文字列を改行と句読点で区切って配列にする。

PHP

正規表現を使う方法もあるが、str_replace() → explode() でもいける。 $sentence = str_replace(array("\r\n", "\r", "\n"), '###', $sentence); $sentences = explode('###', $sentence); 上記の例は改行を「###」に置換してから「###」で配列化している。…

for文を高速にする

PHP

for文を使うときはループ回数を以下のように「 $i for( $i = 0; $i < count($arr); $i++ ){ } これは遅いらしい。 ループ毎に count() を実行しているからかな???なので、以下のようにループ回数を「$max_count」でキャッシュするといいらしい。 for( $i = 0…

複数の submit を判別する

1つの form に複数の submit を設置して処理を分けたい。submit も name属性 が使えるので、value が $_POST で渡される。 value は ボタンのラベルになるので、 empty() で name のインデックスを確認すれば処理を分けれる。 <input type='submit' name='submit1' value='hoge'> <input type='submit' name='submit2' value='fuga'> if(empty($_POST['submit1'])…

Zend_Date のコンストラクタ

PHP

Zend_Date を使っていたが、 コンストラクタに渡す配列が問題で上手く日付が設定できなかった。以下のように書くと・・・$datearray = array( 'year' => 2013, 'month'=>1 ); $zend_date = new Zend_Date($datearray);うまくいかない・・・。 2012/1 になる…

trimは全角を取り除かない

PHP

知らなかった・・・。 ということで、調べてみたら解決策は2つ。1.正規表現で取り除く。 2.全角スペースを半角スペースに置換して取り除く。2番が簡単かな・・・。 具体的なコードは調べればいくらでも出てくるので書きません。休みの日は自分の好きなことが…

Fatal error: Maximum execution time of 0 seconds exceeded

PHP

max_execution_time は処理のタイムアウト。 php.iniの設定で 0 にしていればタイムアウトはないはずなのだが、 max_input_time の値でタイムアウトしていた。 こっちも変える必要がある。

最新レコードの取得

手法としては2つ。1.phpの「mysqliクラスのinsert_idプロパティ」を使う。2.Mysqlの「LAST_INSERT_ID()」を使う。 select last_insert_id as id;両方共取得する対象列がauto increment である必要がある。 これに関しては、普段から主キーとしてidを定義して…

BOMの削除

PHP

BOMとは、UTF8ファイルの先頭に付く識別子みたいなもの。以下の関数でBOMを削除できる。

【PHP】fwrite() の改行コード その2

PHP

前にfwriteの改行コードについて書いたが、またハマった・・・。PHPの改行コードは「"」でくくる必要がある。 「'」だと、そのまま出力される。 brタグ を \n に変換する処理がうまくいかなかったのは そのせいなんだね・・・。

外部サーバのMySQLと接続

PHP

ハマった・・・外部サーバのMySQLとPHPで接続しようとしたけど、 接続できない。以下を疑うといいと思う。 1.MySQLユーザーが外部からの接続を許可しているか → ホストを%など外部も設定する。 2.ポートは開いているか → 開ける。 3.接続先サーバのSELinuxの…

【PHP】fwrite()の改行コード

PHP

ハマった・・・。fwrite()を使って改行コードを入れても反映されなかった。 正解は「"」で「\r\n」をくくる。 fwrite($fp, $data."\r\n");

imapで取得したメールのbodyの改行を取る

PHP

ハマった・・・・。 imapで取得したメールはなぜか改行を排除できなかった。以下はダメな例 $data = str_replace(array('\n', '\r', '\r\n'), '', $data); 改行コードをPHP_EOFにすると排除できた。 また、str_replace()でダメならpreg_replace()を使うと上…

ソート

PHP

PHPにはソート用の便利な関数がある。http://php.net/manual/ja/array.sorting.phpこれで少しハマった・・・。 ちゃんと説明読めば問題なかったんだけど・・・。以下をちゃんと確認すること。 ・ソートの基準 → キーをソートするのか、値をソートするのか。 …

エスケープ処理

PHP

htmlspecialchars()を使う。 $title = htmlspecialchars($_data['title'], ENT_QUOTES, 'UTF-8');

headerでredirect

PHP

headerでredirectする。 $root = ''main; $index_url = 'http://'.$_SERVER['SERVER_NAME'].$root; header('Location:'.$index_url);

PHPのnull演算

PHP

DBにnot null 制約を忘れたために、 nullがたくさん・・・。PHPってnullが含まれる演算すると、止まるんじゃ・・・。 と思って調べた。基本的にnullは0として扱われるが、 除算で null / null だとWarningが出る。やっぱnullはダメだよね・・・。

金額を表示するフォーマット

PHP

以下のようにnumber_format()を使えばOK。 number_format('1000')

PHPでPostを利用するときのメモリ制限

PHP

PHPで大きサイズのデータをPostした時に以下のWarningが出た。Warning: POST Content-Length of 数字 bytes exceeds the limit of 数字 bytes in Unknown on line 0これはPostできる容量を超えたことを示しているらしい。 この場合は、$_POSTが空になる。と…