rtimはもっと使える

カテゴリ: PHP

記事投稿日: 2011年12月24日



今日から開発の途中で気がついたことや
失敗談をメモしていきます。
やっぱり文章にすると気づきがあり、
理解が進みます。
先輩方には苦笑される面も多々あることでしょう。

さて、文字列の末尾のカンマを除去するため、
rtimを使ってみました。

事前に配列$arrayからforeachで回して、
カンマを付けたている状態です。
ここでうっかりしたのが、可読性を
あげるため、「カンマとスペース」をつけたのを
ど忘れしたこと。

$array = array(123,456,789);

foreach($array as $val){

$sql .= $val.”, “;

}

$sql_result = rtrim($sql, “,”);

$sql_resultを出力すると、

123, 456, 789,

となります。末尾のカンマが消えない…。

元々、rtimは2番目のパラメータがなければ、
空白、タブ、改行といった文字を削除します。
マニュアル: http://php.net/manual/ja/function.rtrim.php

今まで「末尾の空白を削除する」ことにしか使っていなかったので、
1文字しか扱えないと思いこんでいました。
実際には、引数なしのときに、タブ(\t)や改行(\n)のコードを
デフォルトで削除していることからも分かるように、
何文字でも可能なのが分かりました。

あらためて、
$sql_result = rtrim($sql, “9, “);

$sql_resultを出力すると、

123, 456, 78

となる。納得。

最後に、次の2点も今回調べてみて分かりました。
・rtimは大文字小文字を区別するので、要注意。
驚いたのが、
・指定した文字がなくなるまで処理を続ける
というもの。
下記のように、9が連続してある場合、
$val = “123456789999”;
$val = rtrim($sql, “9”);
$valの出力結果は、
12345678
となります。

結論。
「不要な文字列の除去」はtrim系。
指定した文字列を切り出したりカウントするのはstr系という
漠然とした認識が生まれました。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA




トップに戻る