8月
04
2009
2

[PHP]文字列の下○桁を取得する一番の方法を教えていただきました
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

miau_jpさんより、Twitter入電!素敵な方法を教えていただきました。


$keta = 4;
// 文字列
$test = "24578455";
$result = substr($test, -$keta);
// 数字
$test = 24578455;
$result = $test % pow(10, $keta);

// 指定桁数未満の場合0で埋めるなら
$result = sprintf("%04s", substr($test, -$keta));

スッキリしました。miau_jpさん、どうもありがとうございます!

—以下元の記事

例えば

24578455の下4桁、8455を取得したいとき、皆さんならどうやります?
多分セオリー的なやり方はあるんでしょうけど、僕はわからないので、

		$test = "24578455";
		var_dump(strrev(sprintf("%-04.4s", strrev($test))));

こんな風に訳のわからない方法*1 でやってるんですが、お優しい方助言いただけたら幸いです。

  1. strrevで文字を反転させて頭4桁取得、4桁未満なら0埋、で、最後にstrrevで再反転してます。愚かですよね…orz []
Written by suzukenn in: 記事 | タグ: , ,
2月
14
2009
2

[疑問][CakePHP]findのfieldsにconcat(文字結合)を使う
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

findのfieldsにconcatを使う際の疑問

今日はちょっとした疑問から。

例えば「ユーザ」というモデルがあって、フィールドが

  • id
  • name_l
  • name_f

のように苗字と名前が分かれていた場合に、「User->find(”list”)」で取得するリストを「array(id => name_l.name_f」にするにはどうしたらいいか?ということなんですけれども、こういう場合プレーンなSQLならconcat()*1 を使って、

select id, concat(name_l, name_f) as name from users

とやればidと結合されたnameのフィールドが取得されますよね。

じゃあCakeでやってみましょう。

(続きを読む…)

  1. 文字結合する関数 []
Written by suzukenn in: 記事 | タグ: ,

| I have been indebted to Aeros Theme. | Background image owner is NASA.