首页 > 解决方案 > 使用数组和 PHP 查找匹配的相等顺序

问题描述

我正在绞尽脑汁,找不到解决问题的好方法。我正在尝试设计一个可以在我们的订单系统中用于批量拣货的系统。

关键是,我想从一组订单中挑选 6 个彼此最相等的订单。在我们的仓库中,大多数订单都是它们,因此我们可以通过同时挑选一些订单来节省大量时间。

假设我有以下数组:

<?php

$data = [
    156 => [
        1,
        2,
        7,
        9,
    ],
    332 => [
        3,
        10,
        6
    ],
    456 => [
        1,
    ],
    765 => [
        7,
        2,
        10,
    ],
    234 => [
        1,
        9,
        3,
        6,
    ],
    191 => [
        7,
    ],
    189 => [
        7,
        6,
        3,
    ],
    430 => [
        10,
        9,
        1,
    ],
    482 => [
        1,
        2,
        7,
    ],
    765 => [
        1,
        5,
        9,
    ]
];
?>

数组键是订单 ID,值是它包含的产品 ID。如果我想挑选看起来很相似的前 3 个订单,我从哪里开始?

任何帮助将非常感激!

标签: phpmathcluster-analysis

解决方案


如果我遇到问题,我会这样做:

$topOrders = [];
foreach($data as $value):
    foreach($value as $order):
        if(isset($$order)):
            $$order++;
        else:
            $$order = 1;
        endif;
        $topOrders[$order] = $$order;
    endforeach;
endforeach;

print_r($topOrders);

在 $topOrders 中,您有一个数组,其中包含作为键的 ID,作为值,您可以获得订单数量。您所要做的就是对数组进行排序以获得前 3 名。


推荐阅读