PHPでオブジェクト配列を便利に加工するクラスを作ったぞ。
PHPでオブジェクト配列(インスタンス配列と言ったほうが分かりやすいだろうか)を扱っている時に「こんなことができたらいいのに」と思ったことは無いだろうか?
- オブジェクトの特定プロパティ変数をキーにした、ハッシュ配列に変換したい。
- オブジェクトの特定プロパティ変数のみの配列に変換したい。
- 1の機能で、キーが重複してもいいように値を配列にしたい。
実際、このような変換を行うユーティリティ的なクラスを作成したら頻繁に使うようになったのでみなさんにシェアしたいと思います。
UtilObjectArrayクラス
ダウンロードはこちら。
メソッド名 | 引数 | 説明 |
---|---|---|
arrayToHash | $objects, $key | 特定プロパティ変数をキーにしたハッシュ配列に変換 |
arrayToKeys | $objects, $key | 特定プロパティ変数のみの配列に変換 |
arrayToHashArray | $objects, $key | キーが重複してもいいように値を配列に変換 |
実際に使ってみよう
例えば、以下のようなPersonクラスがあるとしましょう。
そして、3つほどオブジェクト化して配列に格納します。
class Person { function __construct($sei,$mei) { $this->sei = $sei; $this->mei = $mei; } } $persons = array( new Person('山下','こうじ'), new Person('山下','きよし'), new Person('川上','けんじ') );
$personsに対してそれぞれのメソッドを実行した結果がこちら。
UtilObjectArray::arrayToHash($persons,'sei'); //実行結果。性が「山下」は2人いるので上書きされます。重複がない場合に使いましょう。 Array ( [山下] => Person Object ( [sei] => 山下 [mei] => きよし ) [川上] => Person Object ( [sei] => 川上 [mei] => けんじ ) ) UtilObjectArray::arrayToKeys($persons,'sei'); //実行結果。 Array ( [0] => 山下 [1] => 川上 ) UtilObjectArray::arrayToHashArray($persons,'sei'); //実行結果。オブジェクトが配列に格納されるので、性が重複していても大丈夫です。 Array ( [山下] => Array ( [0] => Person Object ( [sei] => 山下 [mei] => こうじ ) [1] => Person Object ( [sei] => 山下 [mei] => きよし ) ) [川上] => Array ( [0] => Person Object ( [sei] => 川上 [mei] => けんじ ) ) )
以上、お役に立てば幸いです。 では!
2012-12-14