Here's an example of the array I'm working against:
Array
(
[0] => Array
(
[id] => 1331
[shortname] => MCS-115-113C
[userid] => 663
[email] => [email protected]
[username] => FOOBARBAZ
[nombrecompleto] => asdfasdf
[lastlogin] => 1367501486
)
[1] => Array
(
[id] => 1331
[shortname] => MAFA-EOOF
[userid] => 323
[email] => [email protected]
[username] => FOOBARBAZ
[nombrecompleto] => asdfasdf
[lastlogin] => 136732186
)
[2] => Array
(
[id] => 1331
[shortname] => MKT-FOOBAR
[userid] => 434
[email] => [email protected]
[username] => adsfasdf
[nombrecompleto] => asdfasdf
[lastlogin] => 1367234486
)
In my case, I want to compare the username
element in the array and delete duplicates.
So in this case, I would only return two elements, username FOOBARBAZ
and adsfasdf
:
Array
(
[0] => Array
(
[id] => 1331
[shortname] => MAFA-EOOF
[userid] => 323
[email] => [email protected]
[username] => FOOBARBAZ
[nombrecompleto] => asdfasdf
[lastlogin] => 136732186
)
[1] => Array
(
[id] => 1331
[shortname] => MKT-FOOBAR
[userid] => 434
[email] => [email protected]
[username] => adsfasdf
[nombrecompleto] => asdfasdf
[lastlogin] => 1367234486
)
How can I accomplish this in PHP?
The array_unique() function removes duplicate values from an array.
This is simple to achieve (and quick since its an internal) with array_unique()
. However, by default this function casts everything to a string, so you will need to pass the SORT_REGULAR
constant. (Demo)
<?php
$data = array(
array(
'id' => 0,
'title' => 'Abc'
),
array(
'id' => 2,
'title' => 'Def',
'content' => 'Stackoverflow!'
),
array(
'id' => 0,
'title' => 'Abc'
)
);
var_dump(array_unique($data, SORT_REGULAR));
Try this:
<?php
$test=array
(
0 => array
(
'id' => '1331',
'shortname' => 'MCS-115-113C',
'userid' => '663',
'email' => '[email protected]',
'username' => 'FOOBARBAZ',
'nombrecompleto' => 'asdfasdf',
'lastlogin' => '1367501486',
),
1 => array
(
'id' => '1331',
'shortname' => 'MAFA-EOOF',
'userid' => '323',
'email' => '[email protected]',
'username' => 'FOOBARBAZ',
'nombrecompleto' => 'asdfasdf',
'lastlogin' => '136732186'
),
2 => array
(
'id' => '1331',
'shortname' => 'MKT-FOOBAR',
'userid' => '434',
'email' => '[email protected]',
'username' => 'adsfasdf',
'nombrecompleto' => 'asdfasdf',
'lastlogin' => '1367234486'
)
);
$userdupe=array();
foreach ($test as $index=>$t) {
if (isset($userdupe[$t["username"]])) {
unset($test[$index]);
continue;
}
$userdupe[$t["username"]]=true;
}
print_r($test);
?>
You can use the below code:
$result = array_unique($data,3);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With