在单独的数组php中相同的重复值

时间:2015-01-14 19:46:58

标签: php

PHP:

$arr = array(1=>'1233',2=>'12334',3 =>'Hello' ,4=>'Hello' ,5 =>'awesome' ,6 =>'awesome' ,7 =>'UK');

// Convert every value to uppercase, and remove duplicate values
$withoutDuplicates = array_unique(array_map("strtoupper", $arr));

$duplicates = array_diff($arr, $withoutDuplicates);
print_r($duplicates);


foreach ($duplicates as $key => $value) {
    echo $value . ":" . $key. ' ';
}

输出:

Array
(
    [3] => Hello
    [4] => Hello
    [5] => awesome
    [6] => awesome
)
Hello:3 Hello:4 awesome:5 awesome:6

在线查询:     http://writecodeonline.com/php/

我需要在单独的数组中获取重复值键。 例如:

array1 includes 3,4 for Hello.
array2 includes 5,6 for awesome.

上面的代码可以输出重复的值,也可以获取它们的密钥。现在我想将重复值键放在数组中。

2 个答案:

答案 0 :(得分:1)

如果我已正确理解你的问题,你想获得每个数组的重复数组值的数组键吗?

这可以使用array_keys()函数完成,并为其提供可选的搜索参数。

/*
 * A side note: you do not have to specify the array index if their are numerical. PHP 
 * will do that for you.
 */ 
$array = array('1233', '12334', 'Hello', 'Hello', 'awesome', 'awesome', 'UK');


$keys   = [];
$unique = array_unique($array);

foreach($unique as $search) {

    $found = array_keys($array, $search);

    /*
     * If array_keys provided more than two results duplicate array values must exist.
     */
    if(count($found) > 1) {
        $keys[strtoupper($search)] = $found;
    }

}

var_dump($keys);

这将产生关联数组,其中数组索引是搜索的值,数组值是所有键的数组。

array (size=2)
  'HELLO' => 
    array (size=2)
      0 => int 3
      1 => int 4
  'AWESOME' => 
    array (size=2)
      0 => int 5
      1 => int 6

希望这有帮助。

问候。

答案 1 :(得分:0)

如果我了解您,您可以使用array_keys

$keys = array_keys($duplicates);