4

いくつかのランダムな値で配列を埋めるアプリを作成する必要がありますが、配列が重複している場合、アプリが正しく動作しません。そのため、重複を見つけて他の値に置き換えるスクリプト コードを記述する必要があります。さて、たとえば私は配列を持っています:

<?PHP
$charset=array(123,78111,0000,123,900,134,00000,900);

function arrayDupFindAndReplace($array){

// if in array are duplicated values then -> Replace duplicates with some other numbers which ones I'm able to specify.
return $ArrayWithReplacedValues;
}
?>

したがって、結果は、重複した値が置き換えられた同じ配列になります。

4

4 に答える 4

3

これまでに見た単語を追跡し、途中で置き換えることができます。

// words we've seen so far
$words_so_far = array();
// for each word, check if we've encountered it so far
//    - if not, add it to our list
//    - if yes, replace it
foreach($charset as $k => $word){
    if(in_array($word, $words_so_far)){
        $charset[$k] = $your_replacement_here;
    }
    else {
        $words_so_far[] = $word;
    }
}

ある程度最適化されたソリューション (重複がそれほど多くない場合) については、array_count_values() (こちらを参照)を使用して、表示される回数をカウントします。

// counts the number of words
$word_count = array_count_values($charset);
// words we've seen so far
$words_so_far = array();
// for each word, check if we've encountered it so far
//    - if not, add it to our list
//    - if yes, replace it
foreach($charset as $k => $word){
    if($word_count[$word] > 1 && in_array($word, $words_so_far)){
        $charset[$k] = $your_replacement_here;
    }
    elseif($word_count[$word] > 1){
        $words_so_far[] = $word;
    }
}
于 2012-11-04T03:51:02.663 に答える
1

関数 array_unique() を使用します

詳細については、http://php.net/manual/en/function.array-unique.phpを参照してください。

于 2012-11-04T03:04:16.897 に答える
-1
$uniques = array();
foreach ($charset as $value) 
   $uniques[$value] = true;
$charset = array_flip($uniques);
于 2012-11-04T03:03:29.910 に答える