PHPのarray_columnが微妙に使いにくいと思った話。

配列の中身を串刺しにして取り出す array_column という関数があるのだが、
あまねみさん的にはこの関数が微妙に使いにくい。

なぜかと言うとこの関数、もとの配列のキーを参照しないで、インデックスの振り直しをしてしまうのだ。そのため、可逆性を保つためにいちいちidを振っておかなくてはいけない。

そこで、以下のような類似関数を作ったので提示しておく。​

function my_array_column($array, $needle, $id = false){
	$return = array();
	foreach($array as $k => $line){
		if(isset($line[$key])){
			if($id!==false){
				if(isset($line[$id])){
					$return[$line[$id]] = $line[$key];
				}
			} else {
				$return[$k] = $line[$key];
			}
		}
	}
	return $return;
}

array_columnと同じ結果を得たければ、第3引数ありはそのまま。
第3引数なしなら、

array_values(my_array_column($array, $needle));

とすれば良い。

いや、そのまま array_column 使えよ。

いいなと思ったら応援しよう!