Reputation: 147
Let's say i have an array like this:
$array = array(
0 =>
array (
'value' => '1' ,
'name' => 'dasdfa sadfa' ),
1=> Array (
'value' => '[email protected]' ,
'name' => 'd2' ),
21 =>
array(
'value' => '[email protected]' ,
'name' => 'name1`' ),
23 =>
array(
'value' => '[email protected]' ,
'name' => 'POPESCU CATALINA' ),
24 =>
array(
'value' => '[email protected]' ,
'name' => 'POPESCU CATALINA' ),
26 =>
array(
'value' => '[email protected]',
'name' => '43414 Test01'),
27 =>
array(
'value' => '[email protected]',
'name' => 'oct oct' )
);
I want to know if exists duplicated value in array with key 'value' I know how to do this if i want a specified value but general no. The result must be an array with no duplicated values(eg:
$array = array(
0 =>
array (
'value' => '1' ,
'name' => 'dasdfa sadfa' ),
1=> Array (
'value' => '[email protected]' ,
'name' => 'd2' ),
23 =>
array(
'value' => '[email protected]' ,
'name' => 'POPESCU CATALINA' ),
26 =>
array(
'value' => '[email protected]',
'name' => '43414 Test01'),
27 =>
array(
'value' => '[email protected]',
'name' => 'oct oct' )
);`
Please help me.
This is my try
function has_dupes($array){
$dupe_array = array();
foreach($array as $val){
if(++$dupe_array[$val] > 1){
return true;
}
}
return false;
}
Upvotes: 0
Views: 1650
Reputation: 978
Try this
$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);
Upvotes: 1
Reputation: 1
$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
Upvotes: 0
Reputation: 3059
$result = array_unique($array);
print_r($result);
And if you want to store all unique data in one array do it like this:
//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>';
}
Upvotes: 1
Reputation: 683
Try this way:
$array = array(
'0' =>
array (
'value' => '1' ,
'name' => 'dasdfa sadfa' ),
'1'=> Array (
'value' => '[email protected]' ,
'name' => 'd2' ),
'21' =>
array(
'value' => '[email protected]' ,
'name' => 'name1`' ),
'23' =>
array(
'value' => '[email protected]' ,
'name' => 'POPESCU CATALINA' ),
'24' =>
array(
'value' => '[email protected]' ,
'name' => 'POPESCU CATALINA' ),
'26' =>
array(
'value' => '[email protected]',
'name' => '43414 Test01'),
'27' =>
array(
'value' => '[email protected]',
'name' => 'oct oct' )
);
$array = array_map("unserialize", array_unique(array_map("serialize", $array)));
Upvotes: 2