[英]PHP: Better way to filter out duplicates?
我有一個類似這樣的數組。
$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()));
有時我用
$filtered = array_flip(array_flip($images))
您必須了解array_flip 的行為,否則您可能會得到意想不到的結果。 需要注意的一些事項是:
使用array_unique 。
$images = array_unique($images);
你是如何構建陣列的? 可能會阻止它被添加使用...
if(!in_array($needle, $haystackarray)){
AddToArray;
}
只是一個想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.