如何在CLI命令行下运行PHP脚本,同时向PHP脚本传递参数?

如何在命令行下运行PHP脚本[带参数]
创建一个简单的文本文件,其中包含有以下PHP代码,并把它保存为hello.php:
<?php
echo "Hello from the CLI";
?>
现在,试着在命令行提示符下运行这个程序,方法是调用CLI可执行文件并提供脚本的文件名:
#php phphello.php
输出Hello from the CLI


-----------------使用标准的输入和输出
你可以在自己的PHP脚本里使用这三个常量,以接受用户的输入,或者显示处理和计算的结果。要更好地理解这一点,可以看看下面的脚本(

列表A):

列表A
<?php
// ask for input
fwrite(STDOUT, "Enter your name: ");

// get input
$name = trim(fgets(STDIN));

// write input back
fwrite(STDOUT, "Hello, $name!");
?>
Look what happens when you run it:
shell> php hello.php
Enter your name: Joe
Hello, Joe!

在这个脚本里,fwrite()函数首先会向标准的输出设备写一条消息,询问用户的姓名。然后它会把从标准输入设备获得的用户输入信息读

取到一个PHP变量里,并它把合并成为一个字符串。然后就用fwrite()把这个字符串打印输出到标准的输出设备上。


-----------------使用命令行自变量
在命令行里输入程序参数来更改其运行方式是很常见的做法。你也可以对CLI程序这样做。PHP CLI带有两个特殊的变量,专门用来达到这个

目的:一个是$argv变量,它通过命令行把传递给PHP脚本的参数保存为单独的数组元素;另一个是$argc变量,它用来保存$argv数组里元素的

个数。

用PHP脚本编写一段读取$argv并处理它所含参数的代码是很简单的。试试列表B里的示例脚本,看看它是如何工作的:

列表B
<?php
print_r($argv);
?>

Run this script by passing it some arbitrary values, and check the output:

shell> php phptest.php chocolate 276 "killer tie, dude!"
Array
( [0] => test.php
[1] => chocolate
[2] => 276
[3] => killer tie, dude!
)

正如你可以从输出的结果看到的,传递给test.php的值会自动地作为数组元素出现在$argv里。要注意的是,$argvis的第一个自变量总是

脚本自己的名称。


下面是一个更加复杂的例子(列表C):

列表C

代码
<?php
// check for all required arguments
// first argument is always name of script!
if ($argc != 4) {
die("Usage: book.php <check-in-date> <num-nights> <room-type> ");
}

// remove first argument
array_shift($argv);

// get and use remaining arguments
$checkin = $argv[0];
$nights = $argv[1];
$type = $argv[2];
echo "You have requested a $type room for $nights nights, checking in on $checkin. Thank you for your order! ";
?>


下面是其用法的示例:

shell> php phpbook.php 21/05/2005 7 single
You have requested a single room for 7 nights, checking in on 21/05/2005. Thank you for your order!

在这里,脚本首先会检查$argc,以确保自变量的数量符合要求。它然后会从$argv里提取出每一个自变量,把它们打印输出到标准的输出。

from:http://www.cnblogs.com/Lovepanda/archive/2010/01/19/1651897.html

转载于:https://www.cnblogs.com/dkblog/archive/2010/06/04/1980695.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 中 异步协程 的 使用方法介绍

静觅 崔庆才的个人博客&#xff1a;Python中异步协程的使用方法介绍&#xff1a;https://cuiqingcai.com/6160.html Python 异步 IO 、协程、asyncio、async/await、aiohttp&#xff1a;https://blog.csdn.net/freeking101/article/details/85286199 1. 前言 在执行一些 IO 密…

半导体终极武器光刻机:为何中国难望ASML项背?!有了全套图纸也做不出来

来源&#xff1a; XuS风险创投行指甲盖大小的芯片&#xff0c;密布千万电线&#xff0c;纹丝不乱&#xff0c;需要极端精准的照相机——光刻机。光刻机精度&#xff0c;决定了芯片的上限。EUV半导体业的终极武器这全靠总部后头那栋最高机密的巨型厂房&#xff0c;里头身穿无尘衣…

CompletableFuture详解~getNow

最简单的例子就是使用一个预定义的结果创建一个完成的CompletableFuture,通常我们会在计算的开始阶段使用它。 static void completedFutureExample() {CompletableFuture cf CompletableFuture.completedFuture("message");assertTrue(cf.isDone());assertEquals(…

AI 与人类未来

来源&#xff1a;腾讯网摘要&#xff1a;今天的人类学&#xff0c;依托协同进化理论&#xff0c;对AI充满信心。 社会产生前后&#xff0c;人类遭遇的进化机制不同。产生之前&#xff0c;是纯粹生态的进化机制&#xff0c;由偶然性和适应性控制&#xff0c;由创造性进化的跃迁…

试玩C++ 操作页面控件

最近数字和金山吵的热火朝天的&#xff0c;群里有人说网友的投票可能有工具刷出来的&#xff0c;觉得应该很有意思&#xff0c;就想自己试一下&#xff0c;玩了半天终于可以操作页面进行投票了&#xff0c;但这个投票做了IP限制&#xff0c;所以工具也无用武之地啊&#xff01;…

浅谈 Windows API 编程

原文地址&#xff1a;http://blog.sina.com.cn/s/blog_46d85b2a01010qpt.html http://blog.sina.com.cn/s/articlelist_1188584234_0_1.html WinSDK 是编程中的传统难点&#xff0c;曾经听有一个技术不是很好的朋友乱说什么给你 API 谁都会用&#xff0c;其实并非那么简单&…

CompletableFuture详解~runAsync

运行一个简单的异步阶段 这个例子创建一个一个异步执行的阶段&#xff1a; static void runAsyncExample() {CompletableFuture cf CompletableFuture.runAsync(() -> {assertTrue(Thread.currentThread().isDaemon());randomSleep();});assertFalse(cf.isDone());sleepE…

Visual Studio “类视图”和“对象浏览器”图标

类视图”和“对象浏览器”显示一些图标&#xff0c;每个图标表示不同类型的符号&#xff0c;如命名空间、类、函数或变量。下表对显示的图标进行说明&#xff0c;并对每个图标进行描述。 图标说明图标说明 命名空间 方法或函数 类 运算符 接口 属性 结构 字段或变量 联…

【数据结构】数据结构知识思维导图

From&#xff1a;https://blog.csdn.net/flowing_wind/article/details/81431354 思维导图源文件&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Z44pX_jn3P6L4BSS13WmUA 提取码&#xff1a;zmga 数据结构知识思维导图&#xff1a;

特斯拉VS Waymo:谁将赢得无人驾驶汽车竞赛?

来源&#xff1a;腾讯科技据外媒报道&#xff0c;现在正有一场从硅谷延伸到底特律的竞赛正在进行&#xff0c;即谁能最先制造出比人类司机驾车更安全的无人驾驶汽车&#xff1f;与几年前相比&#xff0c;这是一项更为艰巨的任务&#xff0c;因为人类司机了解更多东西&#xff0…

CompletableFuture详解~thenApply

在前一个阶段上应用函数 下面这个例子使用前面 #1 的完成的CompletableFuture&#xff0c; #1返回结果为字符串message,然后应用一个函数把它变成大写字母。 static void thenApplyExample() {CompletableFuture cf CompletableFuture.completedFuture("message")…

Silverlight Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation)...

说到对象的旋转&#xff0c;或许就会联想到对象角度的概念。对象的旋转实现实际上就是利用对象的角度改变来实现的位置变换&#xff0c;在《Silverlight & Blend动画设计系列二&#xff1a;旋转动画&#xff08;RotateTransform&#xff09;》一文中有对对象的不同角度变换…

vscode 调试 C++/JavaScript

Microsoft Visual Studio Code&#xff1a;https://blog.csdn.net/freeking101/article/details/86715578 IntelliJ IDEA&#xff1a;https://www.jetbrains.com/products/ 在调试 JavaScript 代码时&#xff0c; 其中 三种 比较 简单&#xff1a; 1.使用 Chrome 等 浏览器 调…

CompletableFuture详解~thenApplyAsync

通过调用异步方法(方法后边加Async后缀)&#xff0c;串联起来的CompletableFuture可以异步地执行&#xff08;使用ForkJoinPool.commonPool()&#xff09;。 static void thenApplyAsyncExample() {CompletableFuture cf CompletableFuture.completedFuture("message&qu…

美国三院院士「迈克尔•乔丹」长文论述:为什么说「人工智能革命」尚未发生...

作者&#xff1a;Michael Jordan雷克世界」编译&#xff1a;嗯~是阿童木呀、KABUDA、EVA人工智能&#xff08;AI&#xff09;是当前时代的颂歌。这句话是由技术人员、学者、记者和风险投资家一致提出且真诚赞扬的。就像其他许多从技术学术领域跨越到通用领域的短语一样&#xf…

吹毛求疵C#(1)明确赋值检查缺陷

喜欢c#, 所以期望也比较高, 也就会留意一些不起眼的小缺陷, 也就会有很多改进的设想, 也就希望能和更多的朋友分享这些发现和畅想. (1)明确赋值检查缺陷 截止到目前的MS C#4.0版编译器为止, 关于明确赋值检查都存在一个令人不爽的诡异问题, 而且也与ECMA标准不一致. 如下例所示…

网络爬虫干货总结!

转载&#xff1a;https://cloud.tencent.com/developer/article/1366434 bilibili 视频 - 聊聊 Python 的应用 - 健壮高效的网络爬虫&#xff1a;https://www.bilibili.com/video/av34379204/ 昨天的时候我参加了掘金组织的一场 Python 网络爬虫主题的分享活动&#xff0c;主要…

GAN 的发展对于研究通用人工智能有什么意义?

作者&#xff1a;Lyken 来源&#xff1a;知乎GAN对于人工智能的意义&#xff0c;可以从它名字的三部分说起&#xff1a;Generative Adversarial Networks。为了方便讲述&#xff0c;也缅怀过去两周在某论坛上水掉的时间&#xff0c;我先从Networks讲起。Networks&#xff1a…

CompletableFuture详解~thenAccept

消费前一阶段的结果 如果下一阶段接收了当前阶段的结果&#xff0c;但是在计算的时候不需要返回值(它的返回类型是void)&#xff0c; 那么它可以不应用一个函数&#xff0c;而是一个消费者&#xff0c; 调用方法也变成了thenAccept: static void thenAcceptExample() {String…

AlldayTest 产品使用--文件

“文件”一栏&#xff0c;可实现新建/打开项目、导入&#xff08;出&#xff09;项目、配置信息等功能。 1、新建项目 运行AlldayTest&#xff0c;点击&#xff1a;“文件”-->“新建”&#xff0c;在出现的窗体内输入新创建项目的名称&#xff0c;选择路径保存即可。Allday…