可能重复:
php多维数组删除重复
我有这样一个数组:
$a = array (
0 => array ( 'value' => 'America', ),
1 => array ( 'value' => 'England', ),
2 => array ( 'value' => 'Australia', ),
3 => array ( 'value' => 'America', ),
4 => array ( 'value' => 'England', ),
5 => array ( 'value' => 'Canada', ),
)
Run Code Online (Sandbox Code Playgroud)
如何删除重复的值,以便我得到:
$a = array (
0 => array ( 'value' => 'America', ),
1 => array ( 'value' => 'England', ),
2 => array ( 'value' => 'Australia', ),
4 => array ( 'value' => 'Canada', ),
)
Run Code Online (Sandbox Code Playgroud)
我尝试使用array_unique,但由于这个数组是多维的,我认为这不起作用.
编辑:我也需要这个数组是多维的,并且在这种格式中,我无法压扁它.
Gum*_*mbo 86
array_unique
在比较值之前使用字符串转换来查找唯一值:
注意:当且仅当两个元素被认为是相等的
(string) $elem1 === (string) $elem2
.用文字表示:当字符串表示相同时.将使用第一个元素.
但是数组总是会转换为Array
:
var_dump("Array" === (string) array());
Run Code Online (Sandbox Code Playgroud)
您可以通过在第二个参数中指定SORT_REGULAR模式来解决此问题array_unique
:
$unique = array_unique($a, SORT_REGULAR);
Run Code Online (Sandbox Code Playgroud)
或者,如果这不起作用,通过在调用查找唯一值之前序列化数组并反序列化它array_unique
:
$unique = array_map('unserialize', array_unique(array_map('serialize', $a)));
Run Code Online (Sandbox Code Playgroud)
Mar*_*rcx 10
这里 :)
<?php
$a = array (
0 => array ( 'value' => 'America', ),
1 => array ( 'value' => 'England', ),
2 => array ( 'value' => 'Australia', ),
3 => array ( 'value' => 'America', ),
4 => array ( 'value' => 'England', ),
5 => array ( 'value' => 'Canada', ),
);
$tmp = array ();
foreach ($a as $row)
if (!in_array($row,$tmp)) array_push($tmp,$row);
print_r ($tmp);
?>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
49363 次 |
最近记录: |