CakePHPの「Hashクラス」の使い方紹介
カテゴリ:インターン生ブログ
こんにちは!伊神です!
今回は、CakePHPの「Hashクラス」についてご紹介します。
配列を便利な形に組み替えが行えたり、抽出したりできるのがCakePHPの「Hashクラス」です。
公式:https://book.cakephp.org/3/ja/core-libraries/hash.html
また、弊社ではWebプロモーション成功事例集をまとめた限定資料を無料で配布しています。
Webマーケティングに興味がある方は、下記ページより目を通してみてください。
Hashクラスとは
Hashクラスとは、配列操作を簡単にするためのクラスです。
Hashクラスは、どこからのモデルやコントローラーからでも呼び出すことができます。
Hashクラスのメソッドは、以下の式を使用して配列データの移動や要素を絞り込むことができます。
このHashクラスを使った簡単な例をご紹介します。
以下のusersという配列があったとして
1 2 3 4 5 6 7 |
$users = [ ['id' => 1, 'name' => 'sample1', 'age' => '25'], ['id' => 2, 'name' => 'sample2', 'age' => '69'], ['id' => 3, 'name' => 'sample3', 'age' => '36'], ['id' => 4, 'name' => 'sample4', 'age' => '52'], ['id' => 5, 'name' => 'sample5', 'age' => '31'], ]; |
「年齢(age)が40歳以上の人を取り出したい」場合通常以下の処理になります。
1 2 3 4 5 6 |
$array_sample = []; for ($i = 0; $i < count($users); $i++) { if ($users[$i]['age'] >= 40) { $array_sample[] = $users[$i]; } } |
しかし、Hashを使うことにより簡単に記述することができます。
1 |
$data = Hash::extract($users, '{n}[age=40].name'); |
以上は、特定の配列を取り出せる「Hash::extract()」を使用しました。
今回は
特定の配列を取り出せる「Hash::extract()」。
配列を並び替えることができる「Hash::sort()」。
配列から特定の値で配列を組み替えることができる「Hash::combine()」。
ついてをご紹介します。
その他にも「Hash::remove()」「Hash::format()」「Hash::contains()」「Hash::check()」「Hash::diff()」などなどたくさんあるので詳しく知りたい方は
公式:https://book.cakephp.org/3/ja/core-libraries/hash.html
で調べてみてください。
※コントローラーでHashを使うには
use Cake\Utility\Hash;
をコントローラー上部に記述する必要があります。
「Hash::extract()」特定の配列を取り出すことができる
欲しい要素だけを取得できます。
Hash::extract(array|ArrayAccess $data, $path)
「名前(name)だけ」を取得したい場合
1 2 3 4 5 6 7 8 9 10 |
$data = Hash::extract($users, '{n}.name'); # 結果 Array( [0] => sample1 [1] => sample2 [2] => sample3 [3] => sample4 [4] => sample5 ) |
「年齢(age)が40歳以上の人を取り出したい」場合
1 2 3 4 5 6 7 |
$data = Hash::extract($users, '{n}[age=40].name'); # 結果 Array ( [0] => sample2 [1] => sample4 ) |
たった一行だけで欲しい情報が取得できるのでとても便利です!
複数の指定も可能なので試してみてください!
「Hash::sort()」配列を並び替えることができる
どの次元のどんな値でもソートすることができる。
sort
(array $data, $path, $dir, $type = ‘regular’)
第2引数の$dir:asc(昇順) または desc(降順) が指定可能です。
第3引数の$type:regular(通常のソート), string(文字列としてソート)など指定する。
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
$data = Hash::extract($users, '{n}[age=40].name'); # 結果 Array ( [0] => Array ( [id] => 1 [name] => sample1 [age] => 25 ) [1] => Array ( [id] => 5 [name] => sample5 [age] => 31 ) [2] => Array ( [id] => 3 [name] => sample3 [age] => 36 ) [3] => Array ( [id] => 4 [name] => sample4 [age] => 52 ) [4] => Array ( [id] => 2 [name] => sample2 [age] => 69 ) ) |
「Hash::combine()」配列を組み替えることができる
配列を自由に組み換えることができます。
combine
(array $data, $keyPath, $valuePath = null, $groupPath = null)
年齢(age)をキーとして配列にする。
1 2 3 4 5 6 7 8 9 10 |
$data = Hash::combine($users, '{n}.age', '{n}.name'); # 結果 Array ( [25] => sample1 [69] => sample2 [36] => sample3 [52] => sample4 [31] => sample5 ) |
最後に
今回はCakePHPのHashクラスについて簡単にご紹介しました。
Hashクラスを使うことにより配列の操作が容易になり、コードがみやすく記述ミスなども減るかなと思います。
配列操作が簡単なのでぜひHashクラス使用してみてください。
またwebで集客する方法を別の記事にまとめております。
詳しく解説しているので、web集客について深く知りたい方は、ぜひこちらもご覧ください。
弊社inglowでは、これから広告の運用を考えられている方、あるいはこれから広告代理店に運用をお願いされる方向けに、「業界別Web広告の成功事例」をまとめた資料を無料配布しております。
下記のフォームに入力いただくだけで、無料で資料をダウンロードしていただけます。ぜひご利用下さい。