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
)
)