php命令行传递参数,PHP命令行传递参数

在以非命令行模式运行PHP的时候,我们可以通过$_GET、$_POST、$_REQUEST来接受get或是post参数,但是以命令行方式运行的话,怎么传递参数以接受参数呢?关于命令行的特点,可以直接看官方文档:http://php.net/manual/zh/features.commandline.php

一、PHP命令行方式(CLI)传递参数

我们可以类比shell文件的传参,如下:

//test.sh#! /bin/bash

echo "一共传递了$# 个参数"

echo "第一个参数:"$1

传递参数方式如下:

2729db94985921f6e9e9c86d66e5a56b.png

其实,在之前的一篇文章“shell脚本中第一行#!/bin/bash作用是什么的呢”中提到,我们可以将#!后面的/bin/bash可执行文件,改为其他的可执行文件。这里,我们改为PHP,如下:#! /usr/bin/php

echo "hello world";

调用的时候,可以./test.sh findme

其实,php命令行方式传递参数,也是类似shell脚本的传参方式。如下:php test.php www findme wang

备注:多个参数,通过空格分割。

二、PHP命令行方式(CLI)接受参数

1、通过全局变量方式获取

在官方文档中提到“传递给脚本的参数可在全局变量 $argv 中获取,全局变量 $argc 存有 $argv 数组中成员变量的个数”,所以,我们可以通过以下方式获得命令行方式的传递参数。<?php

echo "参数个数:", $argc, PHP_EOL;

echo "所有参数:", PHP_EOL;

print_r($argv);

cc8b901d0ad2df8a7aa8d27020d9d95b.png

2、从$_SERVER中读取

通过打印$_SERVER,如下:

5a7f6f1372575fe02b3a08a0427ab3df.png

所以在命令行模式中,可以通过$_SERVER来获取参数。关于$_SERVER更多内容,可以查看“$_SERVER详解”。

3、通过getopt函数来实现

更多的时候,我们更希望传递key => val格式的参数,比如:php test.php --web www.findme.wang

但是前面两种接受方式,却认为这是传递了两个参数。这个时候,getopt就显得很重要。var_dump(getopt("", ["web:"]));

f3872e8970ea65b0bc4fc6d01daf8ad3.png

备注:这里之所以使用 --,传递参数,而不是使用双引号。

同时,getopt还支持“=”号连接key和val,如下:

2493338e30e4c77a8d60094a241e4450.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值