痔になりやすい生活習慣とは?

foreach($ARR_SCATTER as $val){//人数分繰り返す
//値を分解
$EXPLODE_VALUE = explode(",", $val);

//質問1の値を配列に
$QUESTION_NO[1][] = $EXPLODE_NUM[0];

//質問2の値を配列に
$QUESTION_NO[2][] = $EXPLODE_NUM[1];

//質問3の値を配列に
$QUESTION_NO[3][] = $EXPLODE_NUM[2];

//質問4の値を配列に
$QUESTION_NO[4][] = $EXPLODE_NUM[3];

//質問5の値を配列に
$QUESTION_NO[5][] = $EXPLODE_NUM[4];

//最後の質問の値を配列に
$LAST_QUESTION[] = $EXPLODE_NUM[5];

$TOTAL[1] = $QUESTION_NO[1] + $LAST_QUESTION;
$TOTAL[2] = $QUESTION_NO[2] + $LAST_QUESTION;
$TOTAL[3] = $QUESTION_NO[3] + $LAST_QUESTION;
$TOTAL[4] = $QUESTION_NO[4] + $LAST_QUESTION;
$TOTAL[5] = $QUESTION_NO[5] + $LAST_QUESTION;
}


という処理を繰り返し処理をつかって記述したいのですが、うまくいきません。
下記のように記述しましたが、なぜか配列に値が1つしかはいりません。
(質問数は変動、言語はPHP5)


foreach($ARR_SCATTER as $val){//人数分繰り返す
//値を分解
$EXPLODE_NUM = explode(",", $val);
}

for($test =0; $test <= $for_arr_count; $test++){
//質問の値を配列に
$QUESTION_NO[$test][] .= $EXPLODE_RADIO_NUM[$test];

//最後の質問の値を配列に
$LAST_QUESTION[] = $EXPLODE_RADIO_NUM[5];

$TOTAL[] = $QUESTION_NO[$test] + $LAST_QUESTION;
$test++;

}

原因がわからず困っています。
アドバイスお願いいたします。

A 回答 (2件)

1~4行目:$EXPLODE_NUMという配列に毎回$valが分解された値が


上書きでセットされるので最終的に$ARR_SCATTERの最後の値に相当する
$valが分解された値しかセットされない状態で5行目以降の処理を行います。
なのでforeachループの範囲を値セットまで広げる必要があります。

6,14行目:1回のforループで$testの値は2カウントアップされてしまいます。
14行目は不要です。
さらに最後の質問の答えをわざわざ別の変数にする必要がないです。
質問数が変動なので。

8~13行目:$QUESTION_NO,$LAST_QUESTIONは処理途中の一時的な変数ですので
わざわざ配列にしなくていいです。$TOTALは[1]からセットするなら配列のキー名を
しっかりと入れるべきです。
というか元の処理も$TOTAL[1]~[5]は人数分繰り返しても毎回上書きされるので
最後の人の分しかセットされないと思いますよ?

ちょっと上の処理を見ても最終的に何をやりたいかわからなかったので
次のようなことがしたいのかな?と想像して書きます。
やりたいことと間違ってたら指摘してください。

(1)$ARR_SCATTERには$ARR_SCATTER[num]=valueという形で
(num:回答者の番号 value:回答の値がa,b,c,d,eとカンマ区切りで数値で設定されている)
値が設定されている。
(2)$TOTAL[num]にvalueの値を配列で設定したい。

<?php

$ARR_SCATTER = array(1 => '1,2,3,4,5', 2 => '10,20,30,40,50');

foreach($ARR_SCATTER as $key => $val){//人数分繰り返す
//値を分解
$EXPLODE_NUM = explode(",", $val);
foreach($EXPLODE_NUM as $value){
$TOTAL[$key][] = $value;
}
}
print_r($TOTAL);

?>
    • good
    • 0
この回答へのお礼

ありがとうございました!!!
無事解決しました。

お礼日時:2010/12/18 20:55

$for_arr_countの値はちゃんと5になってますか?

この回答への補足

5になっています。
また現在の結果は
array[0] => ([0] => 1)
array[1] => ([1] => 2)
といった感じになっています。

array[0] => ([0] => 1 [1] => 2 [2] => 3)
array[1] => ([0] => 1 [1] => 2 [2] => 3)
というようにしたいのです。

補足日時:2010/11/26 13:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング