2016-05-31 73 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.";