来自一个变量中不同数组的相同值

时间:2013-11-29 20:03:45

标签: php arrays array-intersect

我有一个问题,因为我无法解决它,我无法在任何地方找到它(也许是我不知道的错误的搜索词......)。我有以下内容:

Array
(
    [0] => Array
        (
            [Factuurnummer] => 50
            [Omschrijving] => Thing 1
        )

    [1] => Array
        (
            [Factuurnummer] => 50
            [Omschrijving] => Thing 2
        )

    [2] => Array
        (
            [Factuurnummer] => 51
            [Omschrijving] => Thing 2
        )

    [3] => Array
        (
            [Factuurnummer] => 51
            [Omschrijving] => Thing 3
        )

    [4] => Array
        (
            [Factuurnummer] => 51
            [Omschrijving] => Thing 4
        )

)

现在,当我使用foreach将它打印在一个表中时,我得到5行,但我只想要2,基于相同的'Factuurnummer'。所以1行'Factuurnummer'= 50和'Omschrijving'= Thing 1,Thing 2和另一行'Factuurnummer'= 51和'Omschrijving'= Thing 2,Thing 3,Thing 4。

我已经阅读过有关array_intersect的内容,但我不知道在这种情况下是否会有所帮助。如果基于相同'Factuurnummer'的'Omschrijving'的值将用逗号分隔(如我的小例子),那将是最好的。

希望我足够清楚,有人可以帮助我朝着正确的方向前进!

2 个答案:

答案 0 :(得分:0)

你应该在打印它之前重写你的数组,假设上面的数组叫做$ data:

$facturen = array();
foreach($data as $row) {
    $factuurnummer = $row['Factuurnummer'];
    if (!isset($facturen[$factuurnummer])) {
        $facturen[$factuurnummer] = array();
    }
    $facturen[$factuurnummer][] = $row['Omschrijving'];
}

// On display:
foreach($facturen as $factuurnummer => $omschrijvingen) {
     echo $factuurnummer.': '.implode(', ', $omschrijvingen);
}

答案 1 :(得分:0)

您可以轻松使用array_walk()将数据写入具有更多可用格式的数组中:

$new_array = array();
array_walk($existing_array, function($item, $key_not_used) use ($new_array) {
    $new_array[$item['Factuurnummer']][] = $item['Omschrijving'];
});
var_dump($new_array);