php在cli模式下获取参数的方法
本篇文章主要介绍了php cli模式下获取参数的方法,具有很好的参考价值。下面跟着小编一起来看下吧
PHP在cli模式下接收参数有两种方法
1.使用argv数组
2.使用getopt方法
1.使用argv数组
例如:需要执行一个php,并传递三个参数(type=news, is_hot=1, limit=5)
创建test.php
<?php print_r($argv); ?>
在命令行执行
php test.php news 1 5
输出:
Array ( [0] => test.php [1] => news [2] => 1 [3] => 5 )
可以看到argv[0]为当前执行的php文件名称,而argv[1]~argv[3]则是传递的参数的值
argv[1]等于type的值
argv[2]等于is_hot的值
argv[3]等于limit的值
这样可以根据argv数组来获取传递的参数进行后续的处理操作。
缺点:
使用argv数组,可以按顺序获取传递的参数。但获取后,需要做一个对应处理,上例中需要把argv[1]对应type参数,argv[2]对应is_hot参数,argv[3]对应limit参数。而如果在传递的过程中,参数顺序写错,则会导致程序出错。
例如:
<?php $param = array(); $param['type'] = $argv[1]; $param['is_hot'] = $argv[2]; $param['limit'] = $argv[3]; print_r($param); ?>
执行
php test.php news 1 5
输出:
Array ( [type] => news [is_hot] => 1 [limit] => 5 )
而传递顺序不同,获取到的参数数值会不同,导致后续程序出错
执行
php test.php 1 5 news
输出:
Array ( [type] => 1 [is_hot] => 5 [limit] => news )
因此在使用argv数组传递参数时,需要注意参数传递的顺序。
2.使用getopt方法
getopt 从命令行参数列表中获取选项
array getopt ( string $options [, array $longopts ] )
参数:
options
该字符串中的每个字符会被当做选项字符,匹配传入脚本的选项以单个连字符(-)开头。 比如,一个选项字符串 “x” 识别了一个选项 -x。 只允许 a-z、A-Z 和 0-9。
longopts
选项数组。此数组中的每个元素会被作为选项字符串,匹配了以两个连字符(–)传入到脚本的选项。 例如,长选项元素 “opt” 识别了一个选项 –opt。
options 可能包含了以下元素:
单独的字符(不接受值)
后面跟随冒号的字符(此选项需要值)
后面跟随两个冒号的字符(此选项的值可选)
选项的值是字符串后的第一个参数。它不介意值之前是否有空格。
options 和 longopts 的格式几乎是一样的,唯一的不同之处是 longopts 需要是选项的数组(每个元素为一个选项),而 options 需要一个字符串(每个字符是个选项)。
传值的分隔符可以使用空格或=。
可选项的值不接受空格作为分隔符,只能使用=作为分隔符。
返回值
此函数会返回选项/参数对,失败时返回 FALSE。
选项的解析会终止于找到的第一个非选项,之后的任何东西都会被丢弃。
1.使用options实例
a,b,c 为需要值
d 为可选值
e 为不接受值
<?php $param = getopt('a:b:c:d::e'); print_r($param); ?>
执行
php test.php -a 1 -b 2 -c 3 -d=4 -e 5
输出:
Array ( [a] => 1 [b] => 2 [c] => 3 [d] => 4 [e] => )
2.使用longopts实例
type,is_hot 为需要值
limit 为可选值
expire 为不接受值
<?php $longopt = array( 'type:', 'is_hot:', 'limit::', 'expire' ); $param = getopt('', $longopt); print_r($param); ?>
执行
php test.php --type news --is_hot 1 --limit=10 --expire=100
输出:
Array ( [type] => news [is_hot] => 1 [limit] => 10 [expire] => )
3.找到第一非选项,后面忽略实例
<?php $longopt = array( 'type:', 'is_hot:', 'limit::', 'expire' ); $param = getopt('', $longopt); print_r($param); ?>
执行
php test.php --type news --is_hots 1 --limit=10 --expire=100
输出:
Array ( [type] => news )
因为is_hots不是选项值(定义的是is_hot),所以从这里开始之后的参数,都被丢弃。
总结:
使用argv数组传参数,方法简单,实现方便。参数的顺序不能错,参数获取后需要做对应处理。
使用getopt方法,可使用参数名,参数顺序可随意,比较规范。(建议使用)
相关推荐:
以上是php在cli模式下获取参数的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。
