2016-05-31 15 views
-1

私は運動について助けが必要です。私は、PHPで7つの乱数を生成する小さなプログラムを作成しなければならないと言います(実際には6つの乱数と1から49の間の1つの乱数(補数)を持つ宝くじです)。その数は配列に格納する必要があります。 問題は、その番号もファイルに保存する必要があることです。私はこれをした:アレイの保管方法は?

$num[1]=rand(1,49); 
$num[2]=rand(1,49); 
$num[3]=rand(1,49); 
$num[4]=rand(1,49); 
$num[5]=rand(1,49); 
$num[6]=rand(1,49); 
$num[7]=rand(1,49); 
echo "The numbers are: "; echo $num[1]; echo "-"; echo $num[2]; echo "-"; echo $num[3]; echo "-"; echo $num[4]; echo "-"; echo $num[5]; echo "-"; echo $num[6]; 
echo "<br>"; 
echo "Complementary: ".$num[7]; 

その後、私は数字ことを保存するために、このような何かを試してみました:

$lott=array($num[1],$num[2],$num[3],$num[4],$num[5],$num[6]); 
$comp=array($num[7]); 
$arch=fopen("lottery.txt","a") or die("Internal error"); 
fputs($arch,"Lottery numbers:"); 
fputs($arch,$_REQUEST['lott']); 
fputs($arch,"\n"); 
fputs($arch,"\n"); 
fputs($arch, "Complementary number:"); 
fputs($arch,$_REQUEST['comp']); 
fputs($arch,"\n"); 
fputs($arch,"-------------------------------------------------------"); 
fputs($arch,"\n"); 
fclose($arch); 
echo "The dates have been stored correctly."; 

は明らかにそれが動作しません。私はPHPで新しいので、私はファイルにその番号を格納する方法を知らない。

私は助けていただきありがとうございます。あなたが1つの文字列で、あなたの配列データを結合するために、関数破を使用することができます

+0

エラーは何ですか? –

+1

*明らかに動作しない* - 何が動作しないのですか?代わりに何が起こるのですか?エラーメッセージはありますか? – Mike

+2

これはどこから来たのですか? '$ _REQUEST ['lott']' –

答えて

2

あなたが$_REQUEST['lott']とを保存しようとしています3210をファイルに追加します。これらの変数は設定されていますか?

$lott$compという変数を保存するだけです。どちらも配列なので、保存する前に文字列に変換する必要があります。これにはimplode()を使用できます。

$lott=array($num[1],$num[2],$num[3],$num[4],$num[5],$num[6]); 
$comp=array($num[7]); 
$arch=fopen("lottery.txt","a") or die("Internal error"); 
fputs($arch,"Lottery numbers:"); 
fputs($arch,implode(',', $lott)); 
fputs($arch,"\n"); 
fputs($arch,"\n"); 
fputs($arch, "Complementary number:"); 
fputs($arch,implode(',', $comp)); 
fputs($arch,"\n"); 
fputs($arch,"-------------------------------------------------------"); 
fputs($arch,"\n"); 
fclose($arch); 

この意志出力

Lottery numbers:37,27,41,1,2,14 

Complementary number:19 
------------------------------------------------------- 
+0

私は "implode()"について知らなかった。とても便利でした。どうもありがとうございます。 – ilos28

1

:ここ

$lott=array($num[1],$num[2],$num[3],$num[4],$num[5],$num[6]); 
$comp=array($num[7]); 
$arch=fopen("lottery.txt","a") or die("Internal error"); 
fputs($arch,"Lottery numbers:"); 
fputs($arch, implode(' - ', $lott); //HERE 
fputs($arch,"\n"); 
fputs($arch,"\n"); 
fputs($arch, "Complementary number:"); 
fputs($arch,$comp[0]); //HERE you get only index 0, because your array have just one item 
fputs($arch,"\n"); 
fputs($arch,"-------------------------------------------------------"); 
fputs($arch,"\n"); 
fclose($arch); 
echo "The dates have been stored correctly."; 
+0

1つの項目で配列を格納する場合は、常にインデックスのように "0"を使用する必要があります。だから、 "fputs($ arch、$ lott [6])"のようなものを試してみると、なぜうまくいかないのですか? – ilos28

+1

配列では、 "1"ではなく "0"でカウントを開始します。この場合、$ lottにインデックス6はなく、最後は5(0,1,2,3,4,5) - > 6個の要素です。 –

+0

はい、そうです。私はいつも "0"を忘れていました。まあ、この例は非常に便利です。どうもありがとうございます。 – ilos28

1

は、あなたの答えにされています。コードは、しかし---

<?php 

     // GENERATE 6 RANDOM NUMBERS BETWEEN 1 AND 49 WITH...  
     $arrRandNumbers = array(); 

     for($i=1; $i<7; $i++){ 
      $arrRandNumbers[] = rand(1, 49); 
     } 

     // BUILD-UP A STRING FOR THE RANDOM NUMBERS, DELIMITED WITH A NEW LINE CHARACTER 
     $strRandom  = ""; 
     foreach($arrRandNumbers as $randNumber){ 
      $strRandom .= $randNumber . "\n"; 
     } 

     // STORE NUMBER IN A TEXT FILE... FILE-NAME: random-numbers.txt 
     file_put_contents("random-numbers.txt", rtrim($strRandom, "\n")); 

     var_dump($arrRandNumbers); 

コメントそしてここにもう一つですバリアント:

<?php 

     // GENERATE 6 RANDOM NUMBERS BETWEEN 1 AND 49 WITH... 
     $arrRandNumbers = array(); 

     for($i=1; $i<7; $i++){ 
      $arrRandNumbers[] = rand(1, 49); 
     } 

     // GENERATE A COMPLEMENTARY NUMBER: BETWEEN 1 AND 49 WITH... 
     $compNum  = rand(1, 49); 

     // BUILD-UP A STRING FOR THE RANDOM NUMBERS, DELIMITED WITH 2 SPACES & WRAPPED IN SQUARE BRACKETS 
     $strRandom  = "LOTTERY NUMBERS:" .PHP_EOL; 
     foreach($arrRandNumbers as $randNumber){ 
      $strRandom .= "[" . $randNumber . "] "; 
     } 

     // TRIM-OFF THE SPACES TO THE RIGHT OF THE LOTTERY NUMBERS: 
     rtrim($strRandom); 


     // ADD THE COMPLEMENTARY NUMBER TO THE MIX WITH 3 NEW LINES IN-BETWEEN: 
     $strRandom  .= "\n\n\nCOMPLEMENTARY NUMBER:\n" . $compNum; 

     // STORE NUMBER IN A TEXT FILE... FILE-NAME: random-numbers.txt 
     file_put_contents("random-numbers.txt", $strRandom); 

     var_dump($arrRandNumbers); 
1
<?php 

$num[1]=rand(1,49); 
$num[2]=rand(1,49); 
$num[3]=rand(1,49); 
$num[4]=rand(1,49); 
$num[5]=rand(1,49); 
$num[6]=rand(1,49); 
$num[7]=rand(1,49); 
echo "The numbers are: "; echo $num[1]; echo "-"; echo $num[2]; echo "-"; echo $num[3]; echo "-"; echo $num[4]; echo "-"; echo $num[5]; echo "-"; echo $num[6]; 
echo "<br>"; 
echo "Complementary: ".$num[7]; 

$lott=array($num[1],$num[2],$num[3],$num[4],$num[5],$num[6]); 
$comp=array($num[7]); // You don't need an array to store only one number 
$arch=fopen("lottery.txt","a") or die("Internal error"); 
fputs($arch,"Lottery numbers:"); 
//fputs($arch,$_REQUEST['lott']); 
foreach ($lott as $number) 
{ 
    fputs($arch, $number); 
    fputs($arch, "\n"); 
} 
fputs($arch, "Complementary number:"); 
//fputs($arch,$_REQUEST['comp']); 
fputs($arch, $comp[0]); 
fputs($arch,"\n"); 
fputs($arch,"-------------------------------------------------------"); 
fputs($arch,"\n"); 
fclose($arch); 
echo "The dates have been stored correctly."; 
関連する問題