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;
运行: