Crazy about ActionScript or Something!

配列の重複を削除する

  • Category: PHP — Tags:
  • Posted at 2010/07/23 06:16:47

配列に同じ値が入る可能性があって、重複分は削除したいとき。
array_unique という関数があるんだけど、これは連想配列には使えないようです。削除したキーの分も自動的に詰めてくれる訳ではない。

<?php
	$input = array(3, 5, 6, 6, 3, 8);
	$result = array_unique($input);
	print_r($result);
?>

とやると、キーはそのまま。

Array ( [0] => 3 [1] => 5 [2] => 6 [5] => 8 )

できれば [0] から詰めたものを使いたいので調べていると、このような記述でいけるようです。

<?php
	$data = array(
	array("name" => "ルナティック雑技団", "price" => "410"),
	array("name" => "詐欺とペテンの大百科", "price" => "5040"),
	array("name" => "ルナティック雑技団", "price" => "410"),
	array("name" => "スティーブ・ジョブズ 驚異のプレゼン", "price" => "1890")
	);

	// 検証用配列
	$tmp = array();
	foreach($data as $key => $val){
	// 検証用配列に値が見つからなければ$tmpに格納
		if(!in_array($val,$tmp)){
			$tmp[] = $val;
		}
	}
	$data = $tmp;

	print_r($data);
?>

以下のように [0] から詰めた配列ができます。

Array ( [0] => Array ( [name] => ルナティック雑技団 [price] => 410 ) [1] => Array ( [name] => 詐欺とペテンの大百科 [price] => 5040 ) [2] => Array ( [name] => スティーブ・ジョブズ 驚異のプレゼン [price] => 1890 ) )

参考

0 Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Comments links could be nofollow free.

(c) 2010 chimanaco blog | powered by WordPress with Barecity