Calendar

<< 12月  
1234567
891011121314
15161718192021
22232425262728
293031  
  • 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システム開発

【この記事のタグ】
コメント&トラックバック(0)
  • 使えるネットVPSプラチナプランでのPearインストール
  • 2011.10.30
  • VPSでPEARをインストールするときに若干はまったので次回の為に備忘録にまとめます。


    ・SSH接続し、root権限になってライブラリの共有ディレクトリに移動
    cd /usr/share


    ・最新の PEARパッケージを取得し組み込む
    # php -q go-pear


    すると以下のメッセージ
    # php < <(curl -s http://pear.php.net/go-pear) Sorry! Your PHP version is too new (5.1.6) for this go-pear. Instead use http://pear.php.net/go-pear.phar for a more stable and current version of go-pear, more suited to your PHP version.


    「あなたの使ってる PHP のバージョンは新しすぎるから代わりに http://pear.php.net/go-pear.phar を使用してください。」というような事が書かれている。
    なので、方法を変えてみる。


    # wget http://pear.php.net/go-pear.phar
    # php go-pear.phar
    今度はうまくいったようなのでそのままEnter キーを押す。
    インストールされたか確認。


    # /usr/share/pear/bin/pear -V

    バージョン情報が表示されればインストールOK。
    使えるネットのプラチナプランでは以下のように表示されたのでとりあえずはインストールはされているようだ。

    # pear version
    PEAR Version: 1.9.4
    PHP Version: 5.1.6
    Zend Engine Version: 2.1.0
    Running on: Linux vps-1012648-6540.cp.tsukaeru.ne.jp 2.6.18-028stab070.4 #1 SMP Tue Aug 17 18:32:47 MSD 2010 x86_64


    ここで、pear listを入力してみると
    -bash: pear: command not found


    通常ならinstall済みのpearパッケージ一覧が表示されるのですが、どうもPATHが通っていなかったらしくてコマンドが見つからないと言われちゃいました。
    なのでPATHを通すことにします。
    まずはルートに移動して、「.bash_profile」があるかどうか調べます。
    .profileがあればそっちでしょうけど


    # cd ~
    # ls -al | find .bash*
    「.bash_profile」が見つかれば良いですが、ファイルが無ければ、viで開けば勝手に作られます。


    # vi .bash_profile


    PATH=/usr/share/PEAR/bin:$PATH
    export PATH


    内容を保存したら、設定を反映させます。

    sourceコマンドで指定したファイルを読み込んで実行。


    # source .bash_profile


    この後以下のコマンドで無事一覧が表示されました。

    #pear list


    次にvhost.confファイルを設定する


    vhost.confは以下のディレクトリの中です。

    /var/www/vhosts/ドメイン名/conf


    なければviコマンドで開いて新たに作成する。

    以下はvhost.confの中身となります。


    php_admin_value safe_mode_include_dir “/usr/share/pear”

    php_admin_value open_basedir “/var/www/vhosts/ドメイン名/httpdocs:/tmp:/usr/share/pear”


     vhost.conf作成後、SSHにてサーバに接続後、以下のコマンドを実行。


    /usr/local/psa/admin/sbin/websrvmng –reconfigure-vhost –vhost-name=ドメイン名


    上記の「ドメイン名」の部分は、いずれもvhost.confを作成したドメイン名を指定。

    サーバによっては /etc/php.ini の include_path に /usr/share/pear が設定されていないことがありますので、こちらも適宜設定を行う。

【この記事のタグ】
コメント&トラックバック(0)
  • SQL関数
  • 2011.09.29
  • MySQLでカラムAとカラムBを連結して文字列検索したい場合、文字列を繋ぐ関数CONCATを使うと簡単にできる。


     SELECT * FROM tablename WHERE CONCAT(colA, colB) like ‘%keyword%’


    PostgreSQLでは文字列連結には『||』を使う。使い方はこんな感じで文字列1と文字列2が連結される。↓


    文字列1 || 文字列2


    ちなみに、文字列を置換する関数を使ってカラムの特定の文字を削除する場合はこんな使い方↓
    (ハイフン付きでDBに格納されているレコードをハイフンの有無にかかわらず検索したい場合等・・・)


    replace (code, ‘-‘, ”) = ‘$code’


    SQLで文字列を置換するにはREPLACE関数かTRANSLATE関数を使用するが使い方が違うので要注意!

【この記事のタグ】
コメント&トラックバック(0)
  • httpdocsの上の階層のPHPファイルを読み込む
  • 2011.09.22
  • 使えるネットのVPSプラチナプランを使用していて、セキュリティの為httpdocsと同じ階層のprivateフォルダに置いたPHPファイルを読み込む際、エラーが発生して読み込めない 😯


    どうやら、open_basedirになんらかの設定がされている模様。
    phpinfo関数でopen_basedirの設定を確認すると、Master Valueはno valueだがLocal Valueにはパスが設定されている 💡


    /var/www/vhosts/***/conf/httpd.includeにあるphp_admin_value open_basedir “/var/www/vhosts/***/httpdocs:/tmp”を確認してそれに今回追加するパスを追記してvhost.confに記述する。
    最初はvhost.confがないですが、vi vhost.confで以下の内容を記述。


    <Directory /var/www/vhosts/ドメイン名/httpdocs>
        php_admin_value open_basedir “/var/www/vhosts/ドメイン名/httpdocs/:/tmp/:/var/www/vhosts/ドメイン名/private/”
    </Directory>


    その後、以下のコマンドを実行し、変更内容を有効にする
    /usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=ドメイン名


    最後に念の為以下のコマンドを入力
    service httpd restart

【この記事のタグ】
コメント&トラックバック(0)
【この記事のタグ】
コメント&トラックバック(0)

▲ PAGE TOP