1

重複の可能性:
php 多次元配列を特定の値でグループ化する方法は?
多次元配列を使用したSUMによるphpグループ

PHPの多次元配列の日付値部分に基づいてグループ化することにより、配列要素の数を取得するのに助けが必要です

これが私の元の配列です

Array
(
[0] => Array
    (
        [quantity] => 5
        [dd] => 01-Nov-2012
    )

[1] => Array
    (
        [quantity] => 10
        [dd] => 01-Nov-2012
    )

[2] => Array
    (
        [quantity] => 3
        [dd] => 02-Nov-2012
    )

[3] => Array
    (
        [quantity] => 4
        [dd] => 03-Nov-2012
    )

[3] => Array
    (
        [quantity] => 15
        [dd] => 03-Nov-2012
    )
)

そして、これは私が期待している出力です

Array
(
[0] => Array
    (
        [quantity] => 15
        [dd] => 01-Nov-2012
    )

[1] => Array
    (
        [quantity] => 3
        [dd] => 02-Nov-2012
    )

[2] => Array
    (
        [quantity] => 19
        [dd] => 03-Nov-2012
    )
)
4

2 に答える 2

2

行をループして、dd値でインデックス付けされた別の配列の数量を合計するだけです。

$in = array(array()); // your input
$out = array();
foreach ($in as $row) {
    if (!isset($out[$row['dd']])) {
        $out[$row['dd']] = array(
            'dd' => $row['dd'],
            'quantity' => 0,
        );
    }
    $out[$row['dd']]['quantity'] += $row['quantity'];
}
$out = array_values($out); // make the out array numerically indexed
var_dump($out);
于 2012-11-08T07:07:04.113 に答える
1

Orrrrr... 日が一意であるため:

  <?php

  header('Content-type: text/plain');

  $inputArray  = array(
    array('qty' => 5,  'dd'  => '01-Nov-2012'),
    array('qty' => 10, 'dd'  => '01-Nov-2012'),
    array('qty' => 3,  'dd'  => '02-Nov-2012'),
    array('qty' => 4,  'dd'  => '03-Nov-2012'),
    array('qty' => 15, 'dd'  => '03-Nov-2012'));

  $outputArray = array();

  foreach ( $inputArray as $record ) {
    if ( !key_exists($record['dd'], $outputArray) ) {
      $outputArray[$record['dd']] = 0;
    }
    $outputArray[$record['dd']] += $record['qty'];
  }

  print_r($outputArray);

生成されます:

Array
(
    [01-Nov-2012] => 15
    [02-Nov-2012] => 3
    [03-Nov-2012] => 19
)
于 2012-11-08T09:10:08.193 に答える