将来的你, 肯定会感激现在拼命的自己。
  • php
  •  2015.03.25 00:13
  •  422

php命令行方式运行时几种传入参数的方式

1、url方式

$param = array();
if ($argc > 1) {
    parse_str ( $argv[1], $param );
    foreach ( $param as $k => $v ) {
        echo "define $k=$v\n";
        $param[$k] = $v;
    }
}
print_r($param);

//运行示例

php sync_t_search.php "name=sjk&city=bj"

 

2、系统内置变量

//当传入多个或多个参数可选时有很大的局限性

$argv #0为当前执行的文件名

$argc #参数个数


eg:

/**
 * 使用 $argc $argv 接受参数
 */
echo "接收到{$argc}个参数";
print_r($argv);
root@DELL113 lee]# /usr/local/php/bin/php test.php a b c d

接收到5个参数

Array(

    [0] => test.php

    [1] => a

    [2] => b

    [3] => c

    [4] => d

)



3、系统函数 getopt

//1、个人总结:如果只传一个参数,:(必选)/::(可选)都可
//2、如果传多个参数则要区分可选必选,建议尽量用可选参数并且后面的值不要传入空格
//3、可选参数:标识符存在且有值时,下标才会存在
//4、必选参数:只要标识符存在,下标就会存在(如果取不到值为false)
/**
 * 
php song.php -h"a b" || php song.php -h"a b" 不受空格影响(建议保持一致都不加空格)
array(1) {
  ["h"] => string(3) "a b"
}
php song.php -h -a
array(1) {
  ["h"]=> string(2) "-a"
}
*/
var_dump(getopt('h:a::')); //必选参数,如果参加之间有空格要加引号, 选项后面有空格也不会影响取值,会把他后面的值都当做参数的值
/**
php song.php -asong
array(1) {
  ["a"] => string(4) "song"
}
 */
var_dump(getopt('a::h:')); //可选参数,参数必须紧跟在选项后面,否则获取不到


 

4、提示用户输入

//标准输出
fwrite(STDOUT, "Enter your name: ");
echo "\n";
//标准输入
$name = trim(fgets(STDIN));
fwrite(STDOUT, "Hello, $name!");



 钟永标

个人头像


 热门推荐


 热门阅读