関数 unique_arr($array2D,$stkeep=false,$ndformat=true)
{
// 第 1 レベルの配列キーを保持するかどうかを決定します (第 1 レベルの配列キーは数値以外の場合もあります)
if($stkeep) $stArr = array_keys($array2D);
// セカンダリ配列キーを保持するかどうかを決定します (すべてのセカンダリ配列キーは同じである必要があります)
if($ndformat) $ndArr = array_keys(end($array2D));
//次元削減。implode を使用して 1 次元配列をカンマで接続された文字列に変換することもできます
foreach ($array2D を $v){
$v = join(“,”,$v);
$temp[] = $v;
}
// 繰り返される文字列、つまり繰り返される 1 次元配列を削除します
$temp = array_unique($temp);
// 逆アセンブルした配列を再アセンブルします
foreach ($temp as $k => $v)
{
if($stkeep) $k = $stArr[$k];
if($ndformat)
{
$tempArr =explode(“,”,$v);
foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;
}
else $output[$k] =explode(“,”,$v);
}
$output を返します;
}
$array2D = array('first'=>array('title'=>'1111','date'=>'2222'),'first'=>array('title'=>'1111 ','日付'=>'2222'),'三番目'=>array('タイトル'=>'2222','日付'=>'3333'));
print_r($array2D);
print_r(unique_arr($array2D,true));
|