- PHPでの多次元配列のソート
- 2011.11.22
1次元配列のソートは「asort」などで可能ですが、多次元配列のソートはこれまで自作の関数を使ってやってましたが、今回めちゃくちゃ簡単にできる「array_multisort」を使用してみました。
たとえば以下のような配列があった場合、volume の降順、 edition の昇順に並べ替える場合の処理の例は・・・
$data[] = array(’volume’ => 67, ‘edition’ => 2);
$data[] = array(’volume’ => 86, ‘edition’ => 1);
$data[] = array(’volume’ => 85, ‘edition’ => 6);
$data[] = array(’volume’ => 98, ‘edition’ => 2);
$data[] = array(’volume’ => 86, ‘edition’ => 6);
$data[] = array(’volume’ => 67, ‘edition’ => 7);// 列方向の配列を得る
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}// データを volume の降順、edition の昇順にソートする。
// $data を最後のパラメータとして渡し、同じキーでソートする。
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);これだけでOK!
$dataは参照渡しになるみたいなのでそのまま$dataを使用すればソート済みのデータを扱う事が出来る。
【参考】
http://jp2.php.net/array_multisort
PHP
- PHPで数字の先頭の0(ゼロ)を削除
- 2011.02.25
日付の処理なんかやってると01月とか05日とか数字の先頭に0ゼロが付いてるケースがあり、忘れた時のために、簡単に先頭の0を削除する方法をメモ
$hogehoge //先頭に0が付いている変数
ltrim($hogehoge, 0);
これで先頭のゼロが削除できる。
めちゃくちゃ簡単
PHP
- んっ cronでpearが動かない!?
- 2010.05.27
ブラウザから起動すると正常に動くプログラムがcronだと動かないというのはたまにある現象だし、今までは殆どの場合、パスの違いが原因でした。
今回、pearをcronで動かしたかったのだが、動かなかったので、include_pathを調べてみたが合ってる様子。
色々試してみたところ、PHPがセーフモードの為、動かなかったのが判明した。
ブラウザで起動する場合は、php.ini、httpd.conf、.htaccessの設定を読むが、cron(CLI)ではデフォルトはphp.iniのみだそうなので、php.iniのsafe_modeをOffにしようとも思ったが、そうするとサーバ全てに反映されてしまい、セキュリティ上好ましくない為、cronの記述に「/usr/bin/php -d safe_mode=off」のように -d safe_mode=off を追加することにより問題が解消されました。
- デコメ送信機能を作ってみた
- 2010.05.26
管理画面からメルマガを作成し、会員番号や会員ページのURLを差し込み画像もインラインで添付するような携帯向けメルマガ配信システムを作ってみた。
当初、Qdmailを使用したが、ドコモのみ添付画像が削除され上手くいかなかったため、QdmailでQdsmtpも使いSMTP送信に変更した結果、無事ドコモでも画像がインラインで表示されるようになった。但し、SMTPサーバの種類によっては接続が上手くできず送信エラーが出るため注意が必要!!
調べたところ、1.26bではqmail判定ルーチン部分で不具合があるそうで、
以下のif文をコメントアウトすることにより、動作するようになった。/*
if(false !== @system($sendmail_path.’ -d0.1 < /dev/null
> /dev/null’,$ret)){
if(is_array($ret)){
$ret = reset($ret);
}
$code = (int) substr($ret,0,3);
if( 100 === $code || 111 === $code){
$this->is_qmail = true;
}
}
*/また、今回QdmailをSMTP送信で使ってみた感想として、関数型(qd_send_mail)は送信に時間がかかるため、OOP型にした方が断然よいというのが分かりました
- サブミットボタンの名前
- 2010.04.16
フォームの<input type=”submit” value=”送信”>や<input type=”image” src=”hoge.gif”>のような送信ボタンにname=”hoge” が無くても送信はされるが、たまたま作った検索システムで、検索ワードをある特定の文字にしたときだけその検索ワードが文字化けしてしまい、うまく検索できないという現象が発生
大抵の場合は、きちんと検索されるため、原因が分からず時間を費やしたため備忘録として記述しておきます。
対応策は既に書きました通り、送信ボタンに「name=”hoge”」を追加記述したら、原因は分かりませんが直りました。
