配列の重複を削除する
配列に同じ値が入る可能性があって、重複分は削除したいとき。
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 ) )
参考
