【问题标题】:Same values from different arrays in one variable一个变量中来自不同数组的相同值
【发布时间】:2013-11-29 20:03:45
【问题描述】:

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

大批 ( [0] => 数组 ( [Factuurnummer] => 50 [Omschrijving] => 事物 1 ) [1] => 数组 ( [Factuurnummer] => 50 [Omschrijving] => 事情 2 ) [2] => 数组 ( [Factuurnummer] => 51 [Omschrijving] => 事情 2 ) [3] => 数组 ( [Factuurnummer] => 51 [Omschrijving] => 事情 3 ) [4] => 数组 ( [Factuurnummer] => 51 [Omschrijving] => 事情 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' 的值用逗号分隔(就像我的小例子)。

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

【问题讨论】:

    标签: php arrays array-intersect


    【解决方案1】:

    你应该在打印之前重写你的数组,假设上面的数组被称为 $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);
    }
    

    【讨论】:

    • 非常感谢您,这正是我的意思。但是下一个问题,最初我的数组在“Facuurnummer”和“Omschrijving”旁边扩展了“Naam”和“Datum”列(与相同的 Factuurnummer 相同)。所以在屏幕上它必须是:Factuurnummer |纳姆 |基准 |奥姆施赖文。使用您的代码,我无法获得相应的 Naam 和 Datum。我怎么做?希望你能理解我:)
    • 假设相同编号的发票具有相同的名称和日期(仅描述不同):将$facturen[$factuurnummer] = array()更改为$facturen[$factuurnummer] => array('Naam' => $row['Naam'], 'Datum' => $row['Datum'], 'Omschrijvingen' => array())$facturen[$factuurnummer]['Omschrijvingen'][] = $row['Omschrijving']
    • 非常感谢!它现在像火车一样工作:D。太好了!
    【解决方案2】:

    您可以轻松地使用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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多