ホームページ  >  記事  >  バックエンド開発  >  重複アイテムを削除する PHP 2 次元配列カスタム関数_PHP チュートリアル

重複アイテムを削除する PHP 2 次元配列カスタム関数_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:48:28986ブラウズ

1 次元データから重複を削除する場合、直接的な関数はありません。ただし、PHP には 2 次元データ用の関数が用意されていません。以下に、2 次元配列から重複を削除するための 2 つの優れたカスタム関数を紹介します。 。

例1

コードは次のとおりです コードをコピー


関数 unique_array_2d($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); }

return $output;
}

$array2D = 配列(
'first'=>array('title'=>'1111','date'=>'2222'),

'秒'=>array('タイトル'=>'1111','日付'=>'2222'),

'3 番目'=>array('タイトル'=>'2222','日付'=>'3333')
);

エコー「

」;
print_r(unique_array_2d($array2D,true));

/**
* 指定されたキーを使用して 2 次元配列の重複を排除します
*
* @param array $arr 重複を削除する配列
* @param array $by は重複を削除するキーを指定します。このパラメータが指定されていない場合は、array() が返されます
。 * @return 配列
*/
関数 array_multunique($arr,$by = array()) {
       $temp = array();
       foreach($arr as $key => $val) {
               foreach($by as $v) {
                       $temp[$key] .= isset($val[$v]) ? $val[$v] : '';
               }
       }
       return array_intersect_key($arr,array_unique($temp));
}
/*$aa = 配列 (
   array ('id' => 123, 'name' => '张三' ),
   array ('id' => 123, 'name' => '李四' ),
   array ('id' => 124, 'name' => '王五' ),
   array ('id' => 125, 'name' => '赵六' ),
   array ('id' => 126, 'name' => '赵六' )
); 
$key = 'id'; 
array_multunique ($aa, array('id')); */

関数 array_remove_key($array,$keys){
       if (!is_array($array) || !is_array($keys)){
               false を返します;
       }
       foreach($array as $t){
               foreach($keys as $k){
                       unset($t[$k]);
               }
               $doc[]=$t;
       }
       $doc を返します;

}
/*$配列 = 配列(
       '0' => array('a' => 'aaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeee') )、
       '1' => array('a' => 'aaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeee') )
);
print_r( array_remove_key($array,array('c')));*/

関数 array_remove_key_val(&$a,$b,$c){
       foreach ($a as $key=>$value){
               if ( isset($value[$b]) && ($value[$b]==$c) ){
                       unset($a[$key]);
               }
       }
}
/*$a=配列(
       array('id'=>1,'num'=>10,'type'=>'ニュース'),
       array('id'=>2,'num'=>100,'type'=>'pic')
);
print_r( array_remove_key_val($a,"id","1") );*/


例 2

コードは次のとおりです コードをコピー

/二次元配列から重複した値を削除します
関数 array_unique_fb($array2D){
foreach ($array2D を $v){
$v = join(",",$v); //次元を減らすために、implode を使用して 1 次元配列をカンマで接続された文字列に変換することもできます
$temp[] = $v;
}
$temp = array_unique($temp); // 繰り返される文字列、つまり、繰り返される 1 次元配列を削除します
foreach ($temp as $k => $v){
$temp[$k] =explode(",",$v) //逆アセンブルした配列を再アセンブルします
; }
$temp を返します;
}


//二次元配列から重複した値を削除し、キーの値を保持します
関数 array_unique_fb($array2D){
foreach ($array2D as $k=>$v){
$v = join(",",$v); //次元削減、implode を使用して 1 次元配列をカンマで接続された文字列に変換することもできます
$temp[$k] = $v;
}
$temp = array_unique($temp); // 繰り返される文字列、つまり、繰り返される 1 次元配列を削除します
foreach ($temp as $k => $v){
$array=explode(",",$v) // 逆アセンブルした配列を再構築します
; $temp2[$k]["id"] =$array[0]; $temp2[$k]["litpic"] =$array[1];
$temp2[$k]["タイトル"] =$array[2];
$temp2[$k]["アドレス"] =$array[3];
$temp2[$k]["開始時間"] =$array[4];
$temp2[$k]["終了時間"] =$array[5];
$temp2[$k]["クラスID"] =$array[6];
$temp2[$k]["ename"] =$array[7];
}
$temp2 を返します;
}

http://www.bkjia.com/PHPjc/632786.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/632786.html技術記事 1 次元データから重複を削除する場合、直接的な関数はありません。ただし、PHP には 2 次元データ用の関数がありません。重複を削除するための 2 つの優れた 2 次元配列をお勧めします。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。