PHPでオブジェクト配列を便利に加工するクラスを作ったぞ。

PHPでオブジェクト配列(インスタンス配列と言ったほうが分かりやすいだろうか)を扱っている時に「こんなことができたらいいのに」と思ったことは無いだろうか?

  1. オブジェクトの特定プロパティ変数をキーにした、ハッシュ配列に変換したい。
  2. オブジェクトの特定プロパティ変数のみの配列に変換したい。
  3. 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