0

配列があるとしましょう:

Array
(
    [0] => Array
        (
            [filmType] =>  Symphony 15%
            [rollSize] => 36
            [linearFt] => 3
        )

    [1] => Array
        (
            [filmType] =>  Symphony 15%
            [rollSize] => 36
            [linearFt] => 3
        )
    [2] => Array
        (
            [filmType] =>  Symphony 15%
            [rollSize] => 48
            [linearFt] => 5
        )

    [3] => Array
        (
            [filmType] =>  Symphony 25%
            [rollSize] => 36
            [linearFt] => 7
        )
    [4] => Array
        (
            [filmType] =>  Symphony 35%
            [rollSize] => 36
            [linearFt] => 10
        )
    [5] => Array
        (
            [filmType] =>  Symphony 35%
            [rollSize] => 36
            [linearFt] => 10
        )

一意の配列要素のみの [linearFt] を合計するにはどうすればよいですか。ユニークとは、[filmtype] と [rollSize] が同じという意味です。

配列、配列フィルター、および usort の検索を含む複数の方法を試しました... PHP は初めてで、これは宿題ではありません。助けてくれてありがとう!

したがって、私の出力は次のようになります。

$totalsArray = Array(

    [0] => Array
        (
            [filmType] =>  Symphony 15%
            [rollSize] => 36
            [linearFt] => 8
        )

    [1] => Array
        (
            [filmType] =>  Symphony 15%
            [rollSize] => 48
            [linearFt] => 3
        )
    [2] => Array
        (
            [filmType] =>  Symphony 25%
            [rollSize] => 48
            [linearFt] => 7
        )
    [3] => Array
        (
            [filmType] =>  Symphony 35%
            [rollSize] => 48
            [linearFt] => 20
        )
4

2 に答える 2

1

ああ。これをforeachループで攻撃して各配列を取得し、さまざまなタイプとサイズを累積して、追加します。次のようになります。

$filmTotals = array();
$filmTemp   = array();
foreach ($filmInventory as $film){
    $filmTemp[$film['filmType']][$film['rollSize']] = $filmTemp[$film['filmType']][$film['rollSize']] + $film['linearFt'];
}

// A second foreach to resort into the final format, nested to get the keys out to rename them correctly
foreach ($filmTemp as $filmType=>$film){
    foreach ($film as $filmSize=>$filmLength){
        $filmTotals[] = array('filmType'=>$filmType, 'rollSize'=>$filmSize, 'linearFt'=>$filmLength);
    } //END inner foreach
} // END outer foreach
于 2012-04-25T19:36:47.953 に答える
0

これを試して:

foreach ($myArray as $value) {
   $sumsArray[$value['filmType']_$value['rollSize']]['length_tally'][] = $value['linearFt'];
}

同様filmTypeにすべてをグループ化し、配列でarray_sum()rollSizeを使用して全長を得ることができます。length_tally

出力は探しているものとまったく同じではありませんが、正しい道に進むはずです。

于 2012-04-25T19:31:00.330 に答える