【问题标题】:Check if the array contain multiple same values in php [closed]检查数组是否在php中包含多个相同的值[关闭]
【发布时间】:2017-07-19 06:42:49
【问题描述】:

我有一个像下面这样的数组

$array1 = Array
(
    [0] => 20225,2017-02-20
    [1] => 20225,2017-02-20
    [2] => 10027,2017-02-20
    [3] => 10027,2017-02-20
    [4] => 10021,2017-02-20
    [5] => 20205,2017-02-20
    [6] => 50003,2017-02-20
    [7] => 20225,2017-02-20
    [8] => 20205,2017-02-20
    [9] => 10021,2017-02-20
    [10] => 50003,2017-02-20
    [11] => 10027,2017-02-20
    [12] => 20225,2017-02-20
    [13] => 20225,2017-02-21
    [14] => 20225,2017-02-21
)

如果数组包含超过 2 个的相同结果,我想将其中一个值传递给另一个名为 $array2 的数组。

请帮我做这件事

【问题讨论】:

标签: php arrays


【解决方案1】:

正如你所说:- 如果数组包含超过 2 个的相同结果,我想将其中一个值传递给另一个名为 $array2.

的数组

你可以这样做:-

$array_new = array_count_values($array1);
$array2 = array();
foreach($array_new as $key=>$val){
    if($val >1){ //or do $val >2 based on your desire
      $array2[] = $key;
    }
}
print_r($array2);

输出:- https://eval.in/834306https://eval.in/834402

如果您想检查该数组是否包含重复项,那么您可以这样做:-

if(count(array_unique($array1)) < count($array1)){
  echo "Array have some duplicates";
}else{
  echo "Array have unique elements";
}

输出:-https://eval.in/834312

如果您只想获得唯一的数组,那么您可以执行以下操作:-

$array1 = array_values (array_unique($array1));

输出:- https://eval.in/834317

【讨论】:

  • ** 如果数组包含超过 2 个的相同结果,那么我将 $val &gt;1 更改为 $val &gt;2。很好的答案:) !!!
【解决方案2】:

你可以使用这个简单的函数来检查你的数组是否有重复:

function array_has_dupes($array) {
   return count($array) !== count(array_unique($array));
}

用法如下:

<?php

$array = Array
(
    '0' => '20225,2017-02-20',
    '1' => '20225,2017-02-20',
    '2' => '10027,2017-02-20',
    '3' => '10027,2017-02-20',
    '4' => '10021,2017-02-20',
    '5' => '20205,2017-02-20',
    '6' => '50003,2017-02-20',
    '7' => '20225,2017-02-20',
    '8' => '20205,2017-02-20',
    '9' => '10021,2017-02-20',
    '10' => '50003,2017-02-20',
    '11' => '10027,2017-02-20',
    '12' => '20225,2017-02-20',
    '13' => '20225,2017-02-21',
    '14' => '20225,2017-02-21'
);

$arr_unique = array_unique($array);
$check = count($array) !== count($arr_unique);
$message = 'No duplicates found.';
$arr_duplicates = [];
if($check == 1) {
    $message = "Duplicates found.";
    $arr_duplicates = array_diff_assoc($array, $arr_unique);
}

echo $message;
print_r($arr_duplicates);
?>

顺便说一句,array_unique() 就是您要找的东西。

【讨论】:

    【解决方案3】:
     $array1 = [
        [20225,'2017-02-20'],
        [20225,'2017-02-20'],
        [10027,'2017-02-20'],
        [10027,'2017-02-20'],
        [10021,'2017-02-20'],
        [20205,'2017-02-20'],
        [50003,'2017-02-20'],
        [20225,'2017-02-20'],
        [20205,'2017-02-20'],
        [10021,'2017-02-20'],
        [50003,'2017-02-20'],
        [10027,'2017-02-20'],
        [20225,'2017-02-20'],
        [20225,'2017-02-21'],
        [20225,'2017-02-21']
    ];
    
    $array2 = array_map("unserialize", array_unique(array_map("serialize", $array1)));
    
    echo '<pre>';
    print_r(($array2));`
    

    结果会是这样的

    Array
    (
        [0] => Array
            (
                [0] => 20225
                [1] => 2017-02-20
            )
    
        [2] => Array
            (
                [0] => 10027
                [1] => 2017-02-20
            )
    
        [4] => Array
            (
                [0] => 10021
                [1] => 2017-02-20
            )
    
        [5] => Array
            (
                [0] => 20205
                [1] => 2017-02-20
            )
    
        [6] => Array
            (
                [0] => 50003
                [1] => 2017-02-20
            )
    
        [13] => Array
            (
                [0] => 20225
                [1] => 2017-02-21
            )
    
    )
    

    【讨论】:

    • 你仔细阅读问题了吗?
    【解决方案4】:
    <?php
    $array1 = [
        "20225,2017-02-20", 
        "20225,2017-02-20", 
        "10027,2017-02-20", 
        "10027,2017-02-20", 
        "10027,2017-02-20",
        "10021,2017-02-20"
    ];
    
    $array_unique = [];
    $array2 = []; 
    
    foreach($array1 as $value) { 
        if(!in_array($value, $array_unique)) { 
            $array_unique[] = $value;
        } else {
            $array2[] = $value; 
        }
    }
    
    echo 'Unique Values: ';
    print_r($array_unique);
    
    echo '<hr /> Duplicate Values: ';
    print_r(array_unique($array2));
    

    签到:- http://phptester.net/

    【讨论】:

      猜你喜欢
      • 2019-04-27
      • 2021-03-09
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多