检查多维数组PHP中是否存在相同的值

时间:2014-11-12 09:38:41

标签: php arrays

假设我有一个这样的数组:

$array = array(
  0 => 
    array (
      'value' =>  '1' ,
      'name' =>  'dasdfa sadfa' ),

   1=> Array (
      'value' =>  'adresa@gmail.com' ,
      'name' =>  'd2' ),
  21 => 
    array(
      'value' =>  'adresa@gmail.com' ,
      'name' =>  'name1`' ),

  23 => 
    array(
      'value' =>  'popescu.catalina@gmail.com' ,
      'name' =>  'POPESCU CATALINA' ),
  24 => 
    array(
      'value' =>  'popescu.catalina@gmail.com' ,
      'name' =>  'POPESCU CATALINA' ),

  26 => 
    array(
      'value' =>  'ricardo.ramos@amadeus.com',
      'name' =>  '43414 Test01'),
  27 => 
    array(
      'value' =>  'sta3no213123ct3av@yahoo.com',
      'name' =>  'oct oct' )

);

我想知道数组中是否存在具有键'value'的重复值我知道如果我想要一个指定的值但是一般没有。结果必须是没有重复值的数组(例如:

    $array = array(
  0 => 
    array (
      'value' =>  '1' ,
      'name' =>  'dasdfa sadfa' ),

   1=> Array (
      'value' =>  'adresa@gmail.com' ,
      'name' =>  'd2' ),

  23 => 
    array(
      'value' =>  'popescu.catalina@gmail.com' ,
      'name' =>  'POPESCU CATALINA' ),

  26 => 
    array(
      'value' =>  'ricardo.ramos@amadeus.com',
      'name' =>  '43414 Test01'),
  27 => 
    array(
      'value' =>  'sta3no213123ct3av@yahoo.com',
      'name' =>  'oct oct' )

);`

请帮帮我。

这是我的尝试

function has_dupes($array){
 $dupe_array = array();
 foreach($array as $val){
  if(++$dupe_array[$val] > 1){
   return true;
  }
 }
 return false;
}

4 个答案:

答案 0 :(得分:2)

尝试这种方式:

    $array = array(
  '0' => 
    array (
      'value' =>  '1' ,
      'name' =>  'dasdfa sadfa' ),

   '1'=> Array (
      'value' =>  'adresa@gmail.com' ,
      'name' =>  'd2' ),
  '21' => 
    array(
      'value' =>  'adresa@gmail.com' ,
      'name' =>  'name1`' ),

  '23' => 
    array(
      'value' =>  'popescu.catalina@gmail.com' ,
      'name' =>  'POPESCU CATALINA' ),
  '24' => 
    array(
      'value' =>  'popescu.catalina@gmail.com' ,
      'name' =>  'POPESCU CATALINA' ),

  '26' => 
    array(
      'value' =>  'ricardo.ramos@amadeus.com',
      'name' =>  '43414 Test01'),
  '27' => 
    array(
      'value' =>  'sta3no213123ct3av@yahoo.com',
      'name' =>  'oct oct' )

);
$array = array_map("unserialize", array_unique(array_map("serialize", $array)));

答案 1 :(得分:1)

$result = array_unique($array);
print_r($result);

如果您想将所有唯一数据存储在一个数组中,请执行以下操作:

//declare $array
$unique_array = array();
foreach ($array as  $key => $type) {
    foreach($type as $vale => $name) {
        if ($vale == 'value') {
            //echo $name . '<br>';
            array_push($unique_array, $name);
        }
    }
}
$result = array_unique($unique_array);
foreach ($result as $res) {
    echo $res . '<br>';
}

答案 2 :(得分:1)

试试这个

$values = array_map("unserialize", array_unique(array_map("serialize", $array)));

foreach ($values as $key => $value)
  {
    if ( is_array($value) )
    {
       $values[$key] = $value;
    }
  }

print_r($values);

答案 3 :(得分:0)

$unique_data = array(); // the result array
$duplicate_data = array();

$seen = array();
foreach ($array as $key => $arr) {
    $value = $arr['value'];
    if (!isset($seen[$value])) {
        $seen[$value] = '';
        $unique_data[$key] = $arr;
    } else {
        $duplicate_data[$key] = $arr; // optional
    }
}
unset($seen); // optional in function scope