2つの列の値に基づいて、いくつかの行のデータをグループ化して合計したいと考えています。
私の入力は次のとおりです:
$array = [ ['FA'、12.9]、 ['FA'、12.9]、 ['FB'、12.2]、 ['FC'、12.3]、 ['FA'、12.9]、 ['FB'、12.9]、 ['FA'、12.4]、 ];
グループ化された行の値を文字列として出力し、その後に x
と合計出現数を次の形式で出力したいと考えています。
FA 12.9x3 FB 12.2x3
各グループ内の値の出現をカウントするコードを作成しましたが、次の形式で出力する方法がわかりません:
$new = []; foreach ($array as $key=> $value) { if (!array_key_exists($value[0],$new)) { $new[$value[0]]=[strval($value[1])=>1]; } それ以外 { if (!array_key_exists(strval($value[1]),$new[$value[0]])) { $new[$value[0]][strval($value[1])]=1; // $no =1; } それ以外 { $count= $new[$value[0]]; $count=$count[strval($value[1])]; $count =1; $new[$value[0]][strval($value[1])]=$count; } } }
このコードを最適化して、正しい形式で印刷できますか?
望ましい出力:
FA 12.9x3 FB12.2x1 FC 12.3x1 FB12.9x1 FA 12.4x1
array_reduce の使用
出力:特別で便利な方法で、項目を名前でグループ化できます。次に、値とカウントでグループ化します。このアイデアは、累積された値をキーとして含む配列を渡すことです。
リーリーリーリー