0

私は途方に暮れています。同様の投稿を見たことがありますが、解決策を実装できるように配列に同様の構造を持たせることができません:私は次のように作成した配列を持っています:

foreach ($lastsubresult as $lastselect) { array_push($finaldata_array, $subrecord->data ."=>". $lastselect->total );

この配列を印刷すると、出力は次のようになります。

Array ( 
        [0] => aaaaa=>4 
        [1] => aaaaa=>3 
        [2] => aaaaa=>1 
        [3] => tyt=>2 
        [4] => tyt=>3 
      )

この配列には単一の aaaaa と単一の tyt のみを配置し、次のように数値を追加したいと考えています。

[0] => aaaaa=>8
[1] => tyt=>5

あるいは、

[aaaaa] => 8
[tyt] => 5

私は次のような例を見てきました: $merged = array();

foreach ($finaldata_array as $answer) {
    if (isset($merged[$answer['answer']])) {
        $merged[$answer['answer']]['score'] += $answer['score'];
    } else {
        $merged[$answer['answer']] = $answer;
    }
}

var_dump($merged);

しかし、私の配列を例のようにすることはできません。この例はまさに私が達成したいものです。私のarray_pushが間違っている可能性があります。

大変お世話になりました。どうもありがとうございました。クリストファー

4

1 に答える 1

1

私はあなたのデータがどのようなものかを推測しようとすることしかできませんが、あなたがやろうとしていることは次のようなものです:

foreach($lastsubresult as $lastselect)
{
    $finaldata_array[$subrecord->data] = isset($finaldata_array[$subrecord->data]) ? $finaldata_array[$subrecord->data] + $lastselect->total : $lastselect->total;
}

または、三項演算子が気に入らない/慣れていない場合は? :

foreach($lastsubresult as $lastselect)
{
    if(!isset($finaldata_array[$subrecord->data]))
    {
        $finaldata_array[$subrecord->data] = $lastselect->total;
    }
    else
    {
        $finaldata_array[$subrecord->data] += $lastselect->total;
    }
}
于 2013-09-27T13:35:04.017 に答える