Php 比较相同的数组值

Php 比较相同的数组值,php,arrays,compare,Php,Arrays,Compare,在PHP中,比较同一数组中的元素的最佳方法是什么?这样,如果数组A中有两个具有相同值的元素,我就可以传递一个函数作为参数来执行某些操作 您可以使用和功能如下: if(in_array(2,array_count_values($array)) { // do something } 我假设您不希望合并到数组,然后删除重复项 $array1 = array('a', 'b', 'c'); $array2 = array(1, 2, 3, 'a'); // array_merge() mer

在PHP中,比较同一数组中的元素的最佳方法是什么?这样,如果数组A中有两个具有相同值的元素,我就可以传递一个函数作为参数来执行某些操作

您可以使用和功能如下:

if(in_array(2,array_count_values($array)) {
  // do something
}

我假设您不希望合并到数组,然后删除重复项

$array1 = array('a', 'b', 'c');
$array2 = array(1, 2, 3, 'a');

// array_merge() merges the arrays and array_unique() remove duplicates
var_dump(array_unique(array_merge($array1, $array2)));

// output: array('a', 'b', 'c', 1, 2, 3)

如果要查找数组中重复的所有值,可以执行以下操作:

// Array to search:
$array = array('one', 'two', 'three', 'one');
// Array to search:
// $array = array('a'=>'one', 'b'=>'two', 'c'=>'three', 'd'=>'one');
// Temp array so we don't find the same key multipule times:
$temp = array();
// Iterate through the array:
foreach ($array as $key)
{
    // Check the key hasn't already been found:
    if (!in_array($key, $temp))
    {
        // Get an array of all the positions of the key:
        $keys = array_keys($array, $key);
        // Check if there is more than one position:
        if (count($keys)>1)
        {
            // Add the key to the temp array so its not found again:
            $temp[] = $key;
            // Do something...
            echo 'Found: "'.$key.'" '.count($keys).' times at position: ';
            for($a=0;$a<count($keys);$a++)
            {
                echo $keys[$a].','; 
            }                   
        }
    }
}
//要搜索的数组:
$array=array('1','2','3','1');
//要搜索的数组:
//$array=array('a'=>1','b'=>2','c'=>3','d'=>1');
//Temp数组,因此我们不会找到相同的密钥多模块时间:
$temp=array();
//遍历数组:
foreach($数组作为$key)
{
//检查尚未找到的密钥:
if(!in_数组($key,$temp))
{
//获取键的所有位置的数组:
$keys=数组\ U键($array,$key);
//检查是否有多个位置:
如果(计数($keys)>1)
{
//将密钥添加到临时数组中,使其不再被找到:
$temp[]=$key;
//做点什么。。。
echo“找到:“.$key.”。计数($key)。“位置处的时间:”;
对于($a=0;$a使用或类似(如果希望能够修改值,请在回调中使用引用参数):


能否举例说明数组的外观。如果发现重复项,您希望函数做什么?将for循环更改为foreach,以防数组具有自定义键而不是默认的数字键。
$array1 = array('foo', 'bar', 'baz');
$array2 = array('foo', 'baz');

$result = array_udiff($array1, $array2, function(&$a, &$b) {
     if ($a == $b) {
         $a = $b = 'same!';
         return 0;
     }
     return $a > $b ? 1 : -1;
});

print_r($array1); // array('same!', 'bar', 'same!')
print_r($array2); // array('same!', 'same!')