0

我创建了一些数组,其中包含一些以前数组的所有副本。例如:

[475] => string(9) "038231370" 
[5135] => string(9) "038231370" 
[13236] => string(9) "038231370" 
[5575]=> string(9) "038231370" 
[4357]=> string(9) "038293950" 
[10509]=> string(9) "038293950" 
[6031]=> string(10) "0038303163" 
[5529]=> string(10) "0038303163" 
[534]=> string(10) "0038303163" 
[5303] ...

正如您所见,一些重复项不止一次加倍。我想要做的是创建不同的数组,这些数组将包含相同的值及其键。

function compare($array) {
    $per_array = array();
    $old_key    = NULL;
    $old_value    = NULL;
    foreach($array as $key => $value){

        if ($old_value === $value) {
            $per_array[$old_key]    = $old_value;
            $per_array[$key]        = $value;
        }   
        else {(DO SOME TESTS)unset($per_array);}


        $old_value  = $value;
        $old_key    = $key; 

    }   
}

但我似乎错过了什么。请任何帮助都很重要。

那么我预期的数组的一个例子是:

per_array(4) = { [475] => 字符串(9) "038231370" [5135] => 字符串(9) "038231370" [13236] => 字符串(9) "038231370" [5575]=> 字符串(9 ) "038231370" }

per_array(3) = { [4357]=> 字符串(9) "038293950" [10509]=> 字符串(9) "038293950" }

等等...

4

2 回答 2

0

这是一个简单的例子

  • 独特的价值观
  • 重复值与它们的键

代码

$a = $u = $d = array();

// Build Temp Data with duplicates
for($i = "A"; $i < "M"; $i ++) {
    $a[$i] = mt_rand(0, 3);
}

//Simple Loop
foreach ( $a as $k => $v ) {
    in_array($v, $u) ? $d[$k] = $v : $u[$k] = $v;
}

var_dump($a); // Original array
var_dump($u); // Unique
var_dump($d); // Duplicate with their keys

输出

array (size=12)
  'A' => int 0
  'B' => int 2
  'C' => int 1
  'D' => int 2
  'E' => int 3
  'F' => int 3
  'G' => int 3
  'H' => int 2
  'I' => int 3
  'J' => int 1
  'K' => int 0
  'L' => int 0

array (size=4)
  'A' => int 0
  'B' => int 2
  'C' => int 1
  'E' => int 3

array (size=8)
  'D' => int 2
  'F' => int 3
  'G' => int 3
  'H' => int 2
  'I' => int 3
  'J' => int 1
  'K' => int 0
  'L' => int 0
于 2012-11-16T09:36:23.013 回答
0

试试这个代码:

$array_count = array();

foreach ($array as $key => $arr) :
    $array_count[$arr][] = $key;
endforeach;
于 2012-11-16T09:47:09.353 回答