連想配列のソートでこれまで色々と苦労してきたんですが、ついさっきものすごい便利な関数を発見しました。
その名も array_multisort 。
[PHP]
// ソートしたい配列を定義
$dataArray[0]['name'] = '太郎';
$dataArray[0]['age'] = '15';
$dataArray[1]['name'] = '花子';
$dataArray[1]['age'] = '5';
$dataArray[2]['name'] = '清盛';
$dataArray[2]['age'] = '45';
// ソートしたい項目を定義
$sort = 'age';
// ソートの順序を定義
$order = 'DESC';
// ソートの開始
// マルチソートに使用する配列を生成
$arrayForSort = array();
foreach ($dataArray as $data) {
$arrayForSort[] = $data[$sort];
}
// ソートの順序(昇順/降順)を決定
if (ereg("(desc|Desc|DESC)", $order)) {
$order = SORT_DESC;
} else {
$order = SORT_ASC;
}
// ソートの実行
array_multisort($forSort, $order, $dataArray);
// 結果の表示
print_r($dataArray);
結果については割愛しますが、上記の例でいくと、清盛→太郎→花子の順になります。
関数化しようとしてたせいか、なんだか間延びしたコードですが、気にせず必要な部分だけ使ってください(笑)
[参考文献]
www.akiyan.com/blog/archives/2007/10/phparray_multis.html
jp2.php.net/array_multisort
その名も array_multisort 。
[PHP]
// ソートしたい配列を定義
$dataArray[0]['name'] = '太郎';
$dataArray[0]['age'] = '15';
$dataArray[1]['name'] = '花子';
$dataArray[1]['age'] = '5';
$dataArray[2]['name'] = '清盛';
$dataArray[2]['age'] = '45';
// ソートしたい項目を定義
$sort = 'age';
// ソートの順序を定義
$order = 'DESC';
// ソートの開始
// マルチソートに使用する配列を生成
$arrayForSort = array();
foreach ($dataArray as $data) {
$arrayForSort[] = $data[$sort];
}
// ソートの順序(昇順/降順)を決定
if (ereg("(desc|Desc|DESC)", $order)) {
$order = SORT_DESC;
} else {
$order = SORT_ASC;
}
// ソートの実行
array_multisort($forSort, $order, $dataArray);
// 結果の表示
print_r($dataArray);
結果については割愛しますが、上記の例でいくと、清盛→太郎→花子の順になります。
関数化しようとしてたせいか、なんだか間延びしたコードですが、気にせず必要な部分だけ使ってください(笑)
[参考文献]
www.akiyan.com/blog/archives/2007/10/phparray_multis.html
jp2.php.net/array_multisort
PR
「全角ひら」から「半角カナ」などの文字列変換で便利なのが、mb_convert_kana関数です。
私は、キーワード検索をサイト内に設置したときにお客様から「検索条件を収集・蓄積したい」というご要望があったときに使いました。
「テスト」と「テスト」が別の単語になっちゃうのは好ましくなかったので。
使い方は簡単!というかマニュアルそのまんま。
第2引数の文字列で、どんな変換をするのかを指定しています。
詳しくは参考文献を参照してください。
[PHP]
//(半角が存在する)文字列を半角に変換
[参考文献]
jp.php.net/mb_convert_kana
私は、キーワード検索をサイト内に設置したときにお客様から「検索条件を収集・蓄積したい」というご要望があったときに使いました。
「テスト」と「テスト」が別の単語になっちゃうのは好ましくなかったので。
使い方は簡単!というかマニュアルそのまんま。
第2引数の文字列で、どんな変換をするのかを指定しています。
詳しくは参考文献を参照してください。
[PHP]
//(半角が存在する)文字列を半角に変換
$str = mb_convert_kana($str, "rnask", "Shift_JIS");
[参考文献]
jp.php.net/mb_convert_kana
数値をvarchar型で格納している場合、普通にORDER BYでソートすると、以下のような意図しない順序になることがあります。
number
-------------
100
1000
200
2000
...
これを「ORDER BY (number + 0)」でソートしてやると、数値としてソートされます。
number
-------------
100
200
1000
2000
...
[参考文献]
blog.tsukubasi.jp/araki/archives/135
number
-------------
100
1000
200
2000
...
これを「ORDER BY (number + 0)」でソートしてやると、数値としてソートされます。
number
-------------
100
200
1000
2000
...
[参考文献]
blog.tsukubasi.jp/araki/archives/135
「ユーザの動向を解析したい」という要件が、最近増えているように思います。
で、アクセスログに好きな情報を出力する方法を見つけました。
[参考文献]
「apacheのログに好きな情報を出す方法(PHP編)」
neta.ywcafe.net/000607.html
簡単にいうと、
1. httpd.confのログフォーマットの箇所を修正
2. apache_note()関数でログへ出力
という感じです。
ログ系の関数といえばerror_log()関数なんかもありますよね。
意外と知らない人が多いんですが、こっちも便利ですよ。
で、アクセスログに好きな情報を出力する方法を見つけました。
[参考文献]
「apacheのログに好きな情報を出す方法(PHP編)」
neta.ywcafe.net/000607.html
簡単にいうと、
1. httpd.confのログフォーマットの箇所を修正
2. apache_note()関数でログへ出力
という感じです。
ログ系の関数といえばerror_log()関数なんかもありますよね。
意外と知らない人が多いんですが、こっちも便利ですよ。
忙しくてなかなかメモをとる(記事を書く)時間がありませんで、書きたいことだけが貯まっていってます(汗)
とりあえず、再開一発目は軽いやつから。
header()関数でリダイレクトをすることはよくあると思いますが、その後にexitを記述していなかったことが原因でDoCoMoの携帯端末で不具合が起きていました。
headerがどんどんたまってっちゃうんですかね。。。
そこらへんのことには触れず、とりあえずheader()の後はexitしときましょう!
[php]
header("Location: http://hoge.com/");
exit;
[参考文献]
www.scollabo.com/banban/php/ref/ref_header.html
とりあえず、再開一発目は軽いやつから。
header()関数でリダイレクトをすることはよくあると思いますが、その後にexitを記述していなかったことが原因でDoCoMoの携帯端末で不具合が起きていました。
headerがどんどんたまってっちゃうんですかね。。。
そこらへんのことには触れず、とりあえずheader()の後はexitしときましょう!
[php]
header("Location: http://hoge.com/");
exit;
[参考文献]
www.scollabo.com/banban/php/ref/ref_header.html