こんにちは。新入社員の@tsumakkyです。
わが社では新入社員のことをBN(Brand-Newの頭をとって)と呼びます。
私たちも自分のことを社内で名乗るときは
「○○部BNの△△です!」などと言います。
なので『新入社員』って響き、なんかこっ恥ずかしい感じです(笑)
さて、先月、一ヶ月間、外部の会社でPHP研修を受けてきました。
そしてやっと、1週間前に帰ってきたのですが、
「次はJava覚えて」と言われ、ちょっと泣きそうになりました(笑)
現在Javaを使えるようになるべく奮闘中(…なはず)ですが
我が部で生きていくためにはPHPが必要ですし、まだまだPHPも勉強することだらけなので、
これからPHP+MySQLについて、学んだこと、疑問に思ったことなどなど
役に立たなそうで、もしかしたら役に立つかもしれない記事を書いていきます。
是非是非よろしくお願いします。
『文字の間に , を入れたい!』
文字列abcの間に 「,」 を入れるという課題がありました。
そのころの私はforくらいしか技を身につけておらず、
何とかforを使って書かねばなりませんでした。
居残りまでして考え付いたコードがこれ…
<?php $a = "abc" ; define("I", ",") ; $b = "t" ; /* $b[$c]:偶数 $b[$e]:奇数 $a[$d] */ for ( $c = 0 , $d = 0 , $e = 1 ; $c < 5 , $d < 3 , $e < 6 ; $c += 2 , $d ++ , $e += 2) { $b[$c] = $abc[$d] ; $b[$e] = I ; } echo $b ; ?>
でも、いつ見てもめんどくさいコードですね(笑)
まず、変数の置き方が悪いですね。
「$a」とかわかりにくいし、間違いそうです。
($bは適当な文字を代入しておかないと、定義してないよって怒られます…)
一番の問題は、for文の( )の中の条件式が長過ぎ、複雑過ぎですね。
あの頃はできればいいじゃん!と思っていました。
しかし、phpを学ぶにつれ、できるだけ簡潔に、そしてきれいに書くことが
本当に重要だと感じるようになりました。
長いコードになるほど、バグがあったとき、
こんなめんどくさいコードだと探すのが大変ですから…
さらに、このコードだとechoで表示したとき
a,b,c,
になるんです(間に入れたいだけだから、最後にも付くのは気分のいいもんじゃないです)。
まぁ、for文だとしょうがないですね…
しかし、かといってこの問題を解決するのにどんな技を使えばいいんだ?
やり直しに取り掛かったのは研修も終盤でしたが、使えそうな技なんて習ってないような…
そんなときはgoogle 先生ですね!
調べてみると、implodeなるものが!!!
implode
解説 | すべての配列要素の順序を変えずに、各要素間に glue 文字列をはさんで 1 つの文字列にして返します。 |
書式 | string implode ( string $glue , array $pieces) string implode ( array $pieces ) |
これと出会ったときは鳥肌が立つくらいの衝撃でした(笑)
すると、サクサク筆が進むものですね!
こんなへっぽこ初心者の私でも、ものの5分かかるか?位でできあがりました 。
それがこちら↓
<?php $abc = "abc"; $num = strlen($abc); $arr = array(); for($sub = 0; $sub < $num; $sub ++){ $arr[$sub] = $abc[$sub]; } echo implode(",", $arr); ?>
for文の条件式も、そして全体もすっきりしました! ミソとしては$arrの初期化し、文字列"abc"を配列として代入することです。まぁ、もっとスッキリするような、もっと簡単な方法があるような気がしますが。今の自分のレベルではここらが限界ですね…今後もっと簡単に書けるような関数に出会ったらこちらの記事、また更新したいと思います 。
☆心掛けること
・変数名をわかりやすく
・コードはスッキリと
・ 配列の初期化
…でも、implodeってそんなに使う機会あるのかな?