2016-05-31 33 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,所以我不知道如何將這些數字存儲在一個文件中。

我很感激幫助。

+0

有什麼錯誤? –

+1

*顯然它不起作用* - 什麼不工作?會發生什麼呢?是否有錯誤訊息? – Mike

+2

這是從哪裏來的? '$ _REQUEST ['lott']' –

回答

2

您試圖保存$_REQUEST['lott']$_REQUEST['comp']到你的文件。這些變量是否設置?

只需保存您的$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

好的。如果我想用一個項目來存儲一個數組,我總是必須使用索引等「0」。那麼,爲什麼當你嘗試類似這樣的東西時它不起作用:「fputs($ arch,$ lott [6])」? – ilos28

+1

在數組中,您從「0」開始計數,而不是「1」。在這種情況下,$ 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.";