« 12月 2012 5月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Profile

Mobile

  • 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


    →ホームページ制作・WEBシステム開発

【この記事のタグ】
  • PHPで数字の先頭の0(ゼロ)を削除
  • 2011.02.25
  • 日付の処理なんかやってると01月とか05日とか数字の先頭に0ゼロが付いてるケースがあり、忘れた時のために、簡単に先頭の0を削除する方法をメモ


    $hogehoge  //先頭に0が付いている変数


     ltrim($hogehoge, 0);


    これで先頭のゼロが削除できる。
    めちゃくちゃ簡単 :emoji74:

【この記事のタグ】
  • んっ 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 を追加することにより問題が解消されました。


    ホームページ制作・WEBシステム開発

【この記事のタグ】
, ,
  • 携帯サイトでのmailto使用について
  • 2010.02.05
  • 携帯サイトを作成していて mailto リンクで件名と本文を指定するのに下記のように指定します。
    <a href=”mailto:メールアドレス?subject=件名&body=本文”>
    このとき、件名と本文はURLエンコードする必要があるのだが、キャリアによって渡す文字コードに違いがあります。
    DoCoMo、au は shift_JIS に変換してから URLエンコード、SoftBankはUTF-8にしてからURLエンコードしないと文字化けが起こります。
    ですので、アクセスされた端末を判別し、それに合わせた文字コードに変換しURLエンコードするという手順になります。


    サンプルコードはこんな感じ
    <a href=”mailto:?subject=<?php echo urlencode(mb_convert_encoding(’題名’, ’sjis’));?>&amp;body=< ?php echo urlencode(mb_convert_encoding(’本文’, ’sjis’))?>”>友達に知らせる</a>

【この記事のタグ】
,
  • 空メールでPHPを起動する
  • 2010.01.21
  • 空メール処理を作成したので、メモします。


    1.空メール送信用メールアドレス作成


    2.受信メールボックスにメールが来たらPHPを起動するため、.qmailを編集。
    使えるネットの場合、/var/qmail/mailnames/自分のドメイン/追加したメールアカウント/に.qmailがあるので、SSHで接続し、該当ディレクトリに移動してmoreコマンドなどで内容を表示してみると


    [root@*********]# more .qmail
    | true
    | /usr/bin/deliverquota ./Maildir


    となっているので、1行目に以下の行を追加。


    | /usr/bin/php -d safe_mode=off /var/www/vhosts/自分のドメイン/private/mail.php 
    ※この例では、privateディレクトリのmail.phpを起動する
    (セキュリティの為、ウェブでアクセス出来ないディレクトリに保存)
    privateディレクトリのパーミッションは705


    ※PHPプログラムの起動のみで、メールは受信したくない場合は、最初から入っている記述をコメントアウト。
    #| true
    #| /usr/bin/deliverquota ./Maildir


    3.mail.phpに処理を記述

    ただし、PHPプログラムの中で、絶対パスで読み込むと上手くいかないっぽいので要注意!

    【×】→ require_once( “/var/www/vhosts/自分のドメイン/httpdocs/hogehotge/hogehoge.php” );


    と、このような処理になるのだが、動かなくて大分苦労しました。
    結局privateディレクトリのパーミッションが原因だと分かり無事解決 :emoji92:

【この記事のタグ】
, ,
Page Top