phpの便利関数を紹介します。
phpのバージョンは5.5以上を想定しています。
array_column
それぞれの配列から任意の連想配列を取り出します。
よくこんな配列ありますよね。
$user_data = [
0 => [
'id' => 100,
'name' => '太郎',
'created_at' => '2015/01/01'
],
1 => [
'id' => 101,
'name' => '花子',
'created_at' => '2015/01/02'
]
// ...
];
こんな感じの配列はDBからデータを取得するときよくあります。
- idだけ取りたい場合
array_column($user_data, 'id');
// => [
// 0 => 100,
// 1 => 101
// ]
こんな感じに取り出してくれるので、in_array()なんかで判定するにも便利ですね。
- idがkeyのnameを取りたい場合
array_column($user_data, 'name', 'id')
// => [
// 100 => '太郎',
// 101 => '花子',
// ]
こんな感じにidをkeyでnameを取得出来ました。
更にnameだけじゃなくて全部とりたいよ~ドラえも~んといった場合は、
array_column($user_data, null, 'id');
// 100 => [
// 'id' => 100,
// 'name' => '太郎',
// 'created_at' => '2015/01/01'
// ],
// 101 => [
// 'id' => 101,
// 'name' => '花子',
// 'created_at' => '2015/01/02'
// ]
こんな感じに全部取れます!
array_columnなしで行おうとするとforeach使ったり結構めんどくさいので、おすすめです!
##array_walk
これ、要するにforeachをcallback使ってできますよ、という関数です。
foreach($data as $key => $value) {
//...
}
array_walk($data, function($value, $key) {
//...
});
array_walkのメリットとしては
- 無名関数を利用しているので、外のスコープを汚さない
2. 処理速度が早い(foreachの方が速い)
です!
配列の中身を変えたい場合は、上記でいう$valueを&$valueと参照渡しをしてください!($keyはできない)
あと外のスコープの値を利用したい場合は、
array_walk($data, function($value, $key)use($out_data) {
//...
});
とするか、
array_walk($data, function($value, $key, $out_data){
//...
}, $out_data);
のようにしてください。
2つは参照渡しにした場合に挙動が違いますが、
そこは手抜..勉強になるので動かしてみてください。
クロージャが作れます\(^o^)/
implode
配列を文字列に結合します。
implode(', ', [
'太郎',
'花子',
'健太'
])
// => 太郎, 花子, 健太
空配列を渡せば、空文字列を出力してくれるため、ビューでも使いやすいです。
strtotime
日付形式の文字列をタイムスタンプにする関数です。
これdate関数と一緒によく使います。
日付を変換したいときは基本的に
date('Y-m-d H:i:s') //現在時刻
date('Y-m-d H:i:s', strtotime('- 1 month')) // 一ヶ月前
date('Y年m月d日', strtotime('1990/8/18')) //1990年08月18日
みたいな感じでいけちゃう!
また、正しい日付形式か確認するときは
if(strtotime($date) > 0) {
}
で確認できたりします。
※1970年1月1日 9:00より前の日付が来るときはtrueにならないので使用しない。
続くかも。。