PHPの繰り返し処理と変数の型について教えてください

PHP初心者です。
以下のコードをすっきりとスマートに書きたいのですが・・
$pointAL = $pointA1+$pointA2+$pointA3+$pointA4+$pointA5+$pointA6+$pointA7+$pointA8+$pointA9+$pointA10 ;
for文と変数の型がポイントなところまではわかったのですが
ご教授ください

回答の条件
  • 1人2回まで
  • 登録:2010/01/05 08:44:07
  • 終了:2010/01/05 10:15:45

回答(3件)

id:taknt No.1

きゃづみぃ回答回数13537ベストアンサー獲得回数11982010/01/05 09:52:50

ポイント27pt

$pointA1などは 配列にすれば 以下のようにして forで扱えます。

<?php
$pointAL = "";

$pointA[1] ="1";
$pointA[2] ="2";
$pointA[3] ="3";
$pointA[4] ="4";
$pointA[5] ="5";
$pointA[6] ="6";
$pointA[7] ="7";
$pointA[8] ="8";
$pointA[9] ="9";
$pointA[10] ="10";


for($i = 1; $i <= 10;$i++){
   
   $pointAL = $pointAL . $pointA[$i];
   
   
}

    print $pointAL;

?>

変数の内容が数値ならば

$pointAL = $pointAL . $pointA[$i];

の行を

$pointAL = $pointAL + $pointA[$i];

にしてください。

id:horonict No.2

horonict回答回数257ベストアンサー獲得回数512010/01/05 09:47:33

ポイント27pt

可変変数(http://www.php.net/manual/ja/language.variables.variable.php)というものを使い、以下のように記述します。

ご質問の通り、$pointA1 + $pointA2 + ... + $pointA10 を合計します。

$pointA = 'pointA';
$pointAL = 0;
for ($i = 1; $i <= 10; $i++)  $pointAL += ${$pointA . $i};

しかし、可変変数は初心者向けではありません。配列(http://www.php.net/manual/ja/language.types.array.php)を使うのが無難です。

配列を使うと変数名が変わり、$pointA[1] + $pointA[2] +... + $pointA[10] の合計をする形になります。

たとえば以下のようになります。

<?php
    $pointA = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    $pointAL = 0;
    for ($i = 1; $i <= 10; $i++)  $pointAL += $pointA[$i];
    echo $pointAL;
?>
id:i4ooon No.3

regnif回答回数56ベストアンサー獲得回数202010/01/05 09:50:39

ポイント26pt

$pointA1~$pointA10という変数名に数字が入ってしまっているなら、

$pointA1 = 1;
$pointA2 = 2;
$pointA3 = 3;
$pointA4 = 4;
$pointA5 = 5;
$pointA6 = 6;
$pointA7 = 7;
$pointA8 = 8;
$pointA9 = 9;
$pointA10 =10;
for ( $i = 1; $i <= 10; $i++ ) {
  $temp = "pointA" . $i;
  $pointAL += $$temp;
}
echo $pointAL;

です。

「変数の型がポイント」というのが配列を指しているのであれば、

$pointA[1] = 1;
$pointA[2] = 2;
$pointA[3] = 3;
$pointA[4] = 4;
$pointA[5] = 5;
$pointA[6] = 6;
$pointA[7] = 7;
$pointA[8] = 8;
$pointA[9] = 9;
$pointA[10] =10;
for ( $i = 1; $i <= 10; $i++ ) {
  $pointAL += $pointA[$i];
}
echo $pointAL;

のほうがスマート。

ただし、通常は配列は0番から始まります。今回はわかりやすく、かつ特にこのサンプルだけであれば問題ないので、1番から始めています。

  • id:Mook
    データを配列で用意して、単に繋げるだけなら join を使用するのが簡単ではないですか。

    $pointA = Array( 1,2,3,4,5,6,6,7,8,9,10 );
    $pointAL = join( "", $pointA );
    print( $pointAL );

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません