PHP命令行传参的几种方式(附PTA考试练习题打印沙漏的半成品)

发布于 / PHP / Comments Off on PHP命令行传参的几种方式(附PTA考试练习题打印沙漏的半成品)

php命令行传参方式:

1,

<?php
/**
 * 使用 $argc $argv 接受参数,前者用于计数,后者以数组形式存储参数
 */
echo "接收到{$argc}个参数";
print_r($argv);

例:cmd命令行输入php 1.php a b c,则$argc=4,$argv=[1.php,a,b,c]

2,

<?php
/**
 * 使用 getopt函数
 */
$param_arr = getopt('a:b:');
print_r($param_arr);

例:php 1.php -a 1 -b 5,则$param_arr=[a=>1,b=>5]

3,

<?php
/**
 * 提示用户输入,类似Python
 */
fwrite(STDOUT,'请输入:');
echo '您输入的是:'.fgets(STDIN);

这种方式有点像C++使用scanf函数。具体自行尝试。

另:今天看到PTA练习题上的编译器有PHP的选项,高高兴兴的尝试了一下,后被告知考试不允许使用PHP。。此处附上PHP打印沙漏的半成品源码。很多bug自行解决。。。

<?php
$input="19 *";  //输入的内容
function Getinput($input){
  $input_arr=explode(' ',$input);
  return $input_arr;
}
function Getline($num){
  if($num%2==0){$num--;}
  else {}
  $half=($num-1)/2;
  $all=0;
  for($i=2;$i<=1000;$i++){
    $all=$all+(2*$i)+1;
    if($all>$half){
      $line=$i;
      break;
    }
  }
  return $line;
}
function Getremain($line,$num){
  $used=2*($line+$line*($line-1)-1)+1;
  $remain=$num-$used;
  return $remain;
}
function Getshalou($line,$str){
  $shalou="";
  $tmp=0;
  for($t=$line;$t>=2;$t--){
    for($a=2*$t-1;$a>0;$a--){
      $shalou.= $str;
    }
    $tmp++;
    $shalou.= "\n";
    for($s=$tmp;$s>0;$s--){
      $shalou.= " ";
    }
  }
  $shalou.= $str."\n";
  $tmp--;
  for($s=$tmp;$s>0;$s--){
      $shalou.= " ";
    }
  for($t=2;$t<=$line;$t++){
    for($a=2*$t-1;$a>0;$a--){
      $shalou.= $str;
    }
    $shalou.= "\n";
    $tmp--;
  for($s=$tmp;$s>0;$s--){
      $shalou.= " ";
    }
  }
  return $shalou;
}
$num=Getinput($input)[0];
$str=Getinput($input)[1];
$line=Getline($num);
$remain=Getremain($line,$num);
echo Getshalou($line,$str);
echo $remain;

运行:

转载原创文章请注明,转载自: 斐斐のBlog » PHP命令行传参的几种方式(附PTA考试练习题打印沙漏的半成品)
评论已关闭