0

我有 3 个数组。我需要使用 Names 作为键组合它们,删除重复项(名称重复);只有最有价值的必须保留(基于销售数组的高价值)。我想知道是否有任何简单的方法可以做到这一点。我脑子里只有几个无聊的 foreach 操作。

  [名称] => 数组
        (
            [0] => 阿德鲁·沃森
            [1] => 玛丽亚·琼斯
            [2] => 阿德鲁·沃森
        )

[sales] => Array
    (
        [0] => 12,000.00
        [1] => 11,900.00
        [2] => 11,800.00
    )

[time] => Array
    (
        [0] => 31-Jan-13    
        [1] => 30-Jan-13    
        [2] => 29-Jan-13    
    )

输出应该是这样的:

   [Adrew Watson] => 销售额 => 12,000.00
                          时间 => 2013 年 1 月 31 日

        [玛丽亚琼斯] => 销售额 => 11,900.00
                          时间 => 2013 年 1 月 30 日

我认为这将是一个关联数组,其中的重复项被 "value" 删除。请注意,每个数组(例如 sales )的值已经按 DESC 排序

4

2 回答 2

3
// Assumed from your output the arrays have the indexes Names, sales and time
$names = array('Names' => array('Adrew Watson','Maria Jones','Adrew Watson'));
$sales = array('sales' => array('12,000.00','11,900.00','11,800.00'));
$time = array('time' => array('31-Jan-13','30-Jan-13','29-Jan-13'));
$new = array();

foreach ($names['Names'] as $key => $value)
{
    if (isset($new[$value])) continue; // if already exists, skip

    $new[$value] = array(
        'sales' => $sales['sales'][$key],
        'time' => $time['time'][$key]);
}

print_r($new);

输出:

Array
(
    [Adrew Watson] => Array
        (
            [sales] => 12,000.00
            [time] => 31-Jan-13
        )

    [Maria Jones] => Array
        (
            [sales] => 11,900.00
            [time] => 30-Jan-13
        )

)

根据您的以下评论:

如果Name要从数组中删除 a ,可以在运行上述代码执行此操作,例如:

unset($new['Maria Jones']); // remove Maria Jones
于 2013-02-01T05:45:30.960 回答
1

这可以通过array_merge 而不是array_unique来完成

<?php
$array1 = array("orange", "apple", "grape");
$array2 = array("peach",  "plumb","apple");
$array3 = array("lemon", "plumb");
$newArray = array_merge($array1, $array2, $array3);

$result = array_unique($newArray);
print_r($result);

活生生的例子

于 2013-02-01T05:46:18.967 回答