PHP:过滤重复项的更好方法?

发布于 2024-11-05 02:04:54 字数 515 浏览 1 评论 0原文

我有一个类似这样的数组。

$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);

有更好的方法吗?有什么建议吗?

I have an array sort of like this.

$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'),
);

There is also height and width, but not important here. What I want is to remove the duplicates. What I have done feels rather clunky.

$filtered = array();
foreach($images as $image)
{
    $filtered[$image['src']] = $image;
}
$images = array_values($filtered);

Is there a better way to do this? Any advice?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

心在旅行 2024-11-12 02:04:54

这可能是 array_reduce 的一个很好的用例

$images = array_values(array_reduce($images, function($acc, $curr){
    $acc[$curr['src']] = $curr;
    return $acc;
}, array()));

This would probably be a good use case for array_reduce

$images = array_values(array_reduce($images, function($acc, $curr){
    $acc[$curr['src']] = $curr;
    return $acc;
}, array()));
活雷疯 2024-11-12 02:04:54

使用 array_unique

$images = array_unique($images);

Use array_unique.

$images = array_unique($images);
瀞厅☆埖开 2024-11-12 02:04:54

你如何构建阵列? 来防止它被添加。

if(!in_array($needle, $haystackarray)){
    AddToArray;
}

可能会使用...只是一个想法

How are you building the array? Possibly keep it from ever being added using...

if(!in_array($needle, $haystackarray)){
    AddToArray;
}

Just a thought.

浊酒尽余欢 2024-11-12 02:04:54

有时我使用

$filtered = array_flip(array_flip($images))

你必须了解 array_flip 的 行为,否则你可能会得到意想不到的结果结果。需要注意的一些事情是:

  1. 这将删除重复值
  2. 它删除 NULL 值
  3. 它保留键,但是,它保留最后重复值(不是第一个)
  4. 需要编写一个函数来处理多维数组

Sometimes I use

$filtered = array_flip(array_flip($images))

You have to understand array_flip's behavior though or you might get unexpected results. Some things to note are:

  1. This will remove duplicate values
  2. It removes NULL values
  3. It preserves keys, however, it retains the last duplicate value (not the first)
  4. A function would need to be written to handle multidimensional arrays
明明#如月 2024-11-12 02:04:54

使用 PHP 的 array_unique()

代码:

$filtered = array_unique($images);

Use PHP's array_unique().

Code:

$filtered = array_unique($images);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文