- PR -

配列の集計でお聞きします。

1
投稿者投稿内容
lagna
常連さん
会議室デビュー日: 2003/11/06
投稿数: 27
投稿日時: 2009-03-19 16:41
 ネットで調べていたのですが、できるのかできないのかの判断に困っていまして知恵を拝借しようと思い書き込みさせていただきました。
(Fedora5 PHP5 apache2.2)

$test[0][1] = 1;
$test[0][2] = 2;
$test[0][3] = 3;
$test[0][4] = 4;
$test[1][1] = 10;
$test[2][2] = 12;
$test[3][3] = 13;
$test[4][4] = 14;
といったように二次元の配列に数値が入っています。
そこで、たとえば縦軸(この際縦横はどちらでも良いのですが)
array_sum($test[0]);
とすれば$test[0][1]〜$test[0][4]が集計され10が得られるのですが、
次に二次部分が1、つまり
($test[なんでも][1])となるような集計するには関数ではできないのでしょうか?
for分でまわすのも不細工なので、どう出せばよいのか悩んでいます。できないようなら諦めてプログラムで算出するのですが・・・。

PS 
echo array_sum($test[][1]);としてみたらやっぱりダメですね・・・予想はしていましが・・・

しましま
常連さん
会議室デビュー日: 2005/01/08
投稿数: 41
投稿日時: 2009-03-20 00:29
> for分でまわすのも不細工なので、

for文とかで、普通にコードを書くしかないんじゃないですかね。
array_sum()だって、内部ではループ処理を行ってると思います。


コード:
function sum($array, $index) {
    foreach($array as $a) {
        $result += $a[$index];
    }
    return $result;
}


lagna
常連さん
会議室デビュー日: 2003/11/06
投稿数: 27
投稿日時: 2009-03-21 13:40
さっそくの御返事ありがとうございました。
なんとか便利にやりたいのですが、ループさせるしかないのですね・・・。

array_sum($test[*][1]);
とかできるようになるのを期待して・・・

ありがとうございました。
いとっと
常連さん
会議室デビュー日: 2005/06/10
投稿数: 33
投稿日時: 2009-03-21 14:01
引用:

lagnaさんの書き込み (2009-03-21 13:40) より:
さっそくの御返事ありがとうございました。
なんとか便利にやりたいのですが、ループさせるしかないのですね・・・。

array_sum($test[*][1]);
とかできるようになるのを期待して・・・

ありがとうございました。



二次元配列を受け取って要望の計算結果を返す関数を書くと便利にやれると思います。

もし、言語仕様に組み込んで欲しいのであれば、ここではなく開発者に声が届く場所へ
投稿した方がよいと思います。
ただ期待しているだけでは何も変わらないですよ。


[ メッセージ編集済み 編集者: いとっと 編集日時 2009-03-21 14:01 ]
1

スキルアップ/キャリアアップ(JOB@IT)