php PHP数组唯一值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16357798/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
PHP Array unique values
提问by MyMomSaysIamSpecial
I have an array like this
我有一个这样的数组
Array
(
[0] => Array
(
[id] => BA
[name] => British Airways
)
[1] => Array
(
[id] => BA
[name] => British Airways
)
[2] => Array
(
[id] => LA
[name] => Lanchile
)
[3] => Array
(
[id] => LA
[name] => Lanchile
)
[4] => Array
(
[id] => BA
[name] => British Airways
)
[5] => Array
(
[id] => BA
[name] => British Airways
)
)
and i want to get
我想得到
Array
(
[0] => Array
(
[id] => BA
[name] => British Airways
)
[1] => Array
(
[id] => LA
[name] => Lanchile
)
)
but after using array_unique function, all i have is
但是在使用 array_unique 函数之后,我所拥有的就是
Array
(
[0] => Array
(
[id] => BA
[name] => British Airways
)
)
what am i doing wrong?
我究竟做错了什么?
回答by diegoperini
array_unique(my_array, SORT_REGULAR)
As requested in comments. :)
正如评论中所要求的那样。:)
回答by fullybaked
As mentioned array_unique doesn't support multi dimensional arrays, but you could iterate over the data and build your own
如前所述,array_unique 不支持多维数组,但您可以遍历数据并构建自己的
<?php
$airlines = array(
array('id' => 'BA', 'name' => 'British Airways'),
array('id' => 'LA', 'name' => 'Lanchile'),
array('id' => 'BA', 'name' => 'British Airways'),
array('id' => 'LA', 'name' => 'Lanchile'),
array('id' => 'BA', 'name' => 'British Airways'),
array('id' => 'LA', 'name' => 'Lanchile'),
);
$tmp = array();
foreach ($airlines as $item) {
if (!in_array($item['id'], $tmp)) {
$unique[] = $item;
$tmp[] = $item['id'];
}
}
var_dump($unique); // $unqiue will have your desired results in it var_dump was just for testing
回答by Shijin TR
array_unique is not intended to work on multi dimensional arrays.
You need to loop the array
你需要循环数组
回答by Mark Baker
$airlines = array(
array('id' => 'BA', 'name' => 'British Airways'),
array('id' => 'LA', 'name' => 'Lanchile'),
array('id' => 'BA', 'name' => 'British Airways'),
array('id' => 'LA', 'name' => 'Lanchile'),
array('id' => 'BA', 'name' => 'British Airways'),
array('id' => 'LA', 'name' => 'Lanchile'),
);
$unique = array_map(
'unserialize',
array_unique(
array_map(
'serialize',
$airlines
)
)
);
var_dump($unique);