Php 如何根据键从多维数组中删除重复值

Php 如何根据键从多维数组中删除重复值,php,arrays,Php,Arrays,简单问题有以下代码,但不起作用 //Enter your code here, enjoy! $correo[] = array('valor'=>'vikram.123@gmil.com','registro'=>'23'); $correo[] = array('valor'=>'vikram.123@gmil.com','registro'=>'24'); $correo[] = array('valor'=>'vikram.123@gmil.com','re

简单问题有以下代码,但不起作用

//Enter your code here, enjoy!
$correo[] = array('valor'=>'vikram.123@gmil.com','registro'=>'23');
$correo[] = array('valor'=>'vikram.123@gmil.com','registro'=>'24');
$correo[] = array('valor'=>'vikram.123@gmil.com','registro'=>'26');

function arrayUnique($myArray){
    if(!is_array($myArray))
        return $myArray;

    foreach ($myArray as &$myvalue){
        $myvalue=serialize($myvalue);
    }

    $myArray=array_unique($myArray);

    foreach ($myArray as &$myvalue){
        $myvalue=unserialize($myvalue);
    }

    return $myArray;

} 

$arr= arrayUnique($correo);

var_dump($arr);
我想做的是删除那些有重复的
valor
键的行,例如上面数组的结果应该是

Array ( 
    [0] => Array ( 
        [valor] => 'vikram.123@gmail.com' 
        [registro] => 24 
        ) 
)

您可以像这样定义函数-

function arrayUnique($myArray){
    if(!is_array($myArray))
        return $myArray;
    $temp = array();
    foreach ($myArray as $myvalue){
        $temp[$myvalue['valor']] = $myvalue;
    }
    return $temp;
}

valor
作为键存储数组。它将只存储最后一个。

您可以这样做

$correo[] = array('valor'=>'vikram.123@gmil.com','registro'=>'23');
$correo[] = array('valor'=>'vikram.123@gmil.com','registro'=>'24');
$correo[] = array('valor'=>'vikram.123@gmil.com','registro'=>'26');
function arrayUnique($myArray, $uniqueKeyName)  
{ 
    // Unique Array for return  
    $myReturnArray = array();  
    // Array with the md5 hashes  
    $arrayHashes = array();  
    foreach($myArray as $key => $item) {        
        $hash = md5(serialize($item[$uniqueKeyName]));       
          if (!isset($arrayHashes[$hash])) {  
           $arrayHashes[$hash] = $hash;         
           $myReturnArray[] = $item;
        }  
    }  
    return $myReturnArray;  
} 
$arr= arrayUnique($correo, 'valor');
    echo "<pre>";
    print_r($arr);  
    echo "</pre>"; 
$correo[]=数组('valor'=>'vikram。123@gmil.com','registro'=>'23');
$correo[]=数组('valor'=>'vikram。123@gmil.com','registro'=>'24');
$correo[]=数组('valor'=>'vikram。123@gmil.com','registro'=>'26');
函数arrayUnique($myArray,$uniqueKeyName)
{ 
//返回的唯一数组
$myReturnArray=array();
//使用md5散列的数组
$arrayhash=array();
foreach($myArray as$key=>$item){
$hash=md5(序列化($item[$uniqueKeyName]);
如果(!isset($arrayhash[$hash]){
$arrayhash[$hash]=$hash;
$myReturnArray[]=$item;
}  
}  
return$myReturnArray;
} 
$arr=arrayUnique($correo,'valor');
回声“;
印刷费($arr);
回声“;

您可以这样尝试,因为您说过应该考虑
注册表中的任何一个

 [akshay@localhost tmp]$ php test.php
 Array
 (
     [0] => Array
         (
             [valor] => vikram.123@gmil.com
             [registro] => 23
         )

     [1] => Array
         (
             [valor] => vikram.123@gmil.com
             [registro] => 24
         )

     [2] => Array
         (
             [valor] => vikram.123@gmil.com
             [registro] => 26
         )

 )

 Array
 (
     [0] => Array
         (
             [valor] => vikram.123@gmil.com
             [registro] => 23
         )

 )

应该考虑哪个
registro
?@b0s3到目前为止,任何一个都无法在registro中看到任何重复的值。。
 [akshay@localhost tmp]$ php test.php
 Array
 (
     [0] => Array
         (
             [valor] => vikram.123@gmil.com
             [registro] => 23
         )

     [1] => Array
         (
             [valor] => vikram.123@gmil.com
             [registro] => 24
         )

     [2] => Array
         (
             [valor] => vikram.123@gmil.com
             [registro] => 26
         )

 )

 Array
 (
     [0] => Array
         (
             [valor] => vikram.123@gmil.com
             [registro] => 23
         )

 )