我有一个像这样的数组。
$images = array
(
array('src' => 'a.jpg'),
array('src' => 'b.jpg'),
array('src' => 'c.jpg'),
array('src' => 'd.jpg'),
array('src' => 'b.jpg'),
array('src' => 'c.jpg'),
array('src' => 'b.jpg'),
);
还有高度和宽度,但这里并不重要。我想要的是删除重复。我所做的事感觉相当笨重。
$filtered = array();
foreach($images as $image)
{
$filtered[$image['src']] = $image;
}
$images = array_values($filtered);
有更好的方法吗?有什么建议吗?
答案 0 :(得分:1)
这可能是array_reduce
的一个很好的用例$images = array_values(array_reduce($images, function($acc, $curr){
$acc[$curr['src']] = $curr;
return $acc;
}, array()));
答案 1 :(得分:0)
使用array_unique。
$images = array_unique($images);
答案 2 :(得分:0)
你是如何构建阵列的?可能不会使用它来添加...
if(!in_array($needle, $haystackarray)){
AddToArray;
}
只是一个想法。
答案 3 :(得分:0)
有时候我会用
$filtered = array_flip(array_flip($images))
您必须了解array_flip's行为,否则您可能会收到意外结果。需要注意的一些事项是:
答案 4 :(得分:-1)