我有一个像这样的数组
$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);
有更好的方法吗?任何建议吗?
这可能是array_reduce
的一个很好的用例$images = array_values(array_reduce($images, function($acc, $curr){
$acc[$curr['src']] = $curr;
return $acc;
}, array()));
使用array_unique.
$images = array_unique($images);
如何构建数组?可能阻止它被添加使用…
if(!in_array($needle, $haystackarray)){
AddToArray;
}
只是一个想法。
有时我用
$filtered = array_flip(array_flip($images))
你必须理解array_flip的行为,否则你可能会得到意想不到的结果。以下是需要注意的事项:
- 这将删除重复的值
- 删除NULL值
- 它保留键,但是,它保留最后一个重复值(不是第一个)
- 需要编写一个函数来处理多维数组
使用PHP的array_unique()
.
代码:
$filtered = array_unique($images);