成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

PHP如何獲取命令行參數(shù)

瀏覽:156日期:2022-09-07 14:20:38

使用 PHP 開發(fā)的同學多少都會接觸過 CLI 命令行。經常會有一些定時任務或者一些腳本直接使用命令行處理會更加的方便,有些時候我們會需要像網頁的 GET 、 POST 一樣為這些命令行腳本提供參數(shù)。比如在針對某些日期做統(tǒng)計的腳本,就需要傳遞一個日期給它,這樣我們就統(tǒng)計指定日期的一些數(shù)據。這類需求應該非常常見,那么,我們都是如何來接收這些命令行的參數(shù)的呢?今天,就來介紹一下這方面的內容。

$argv 獲得所有空格分隔的參數(shù)列表

這個變量估計是大家用得比較多的一個接參變量了。它是 PHP 為我們準備好的一個固定變量,目的就是獲取傳遞給腳本的參數(shù)數(shù)組。

print_r($argv);// php 如何獲取PHP命令行參數(shù).php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd // Array// (// [0] => 如何獲取PHP命令行參數(shù).php// [1] => --a=1// [2] => -b=2// [3] => -c=3// [4] => -d=4// [5] => --e=5// [6] => ccc// [7] => ddd// )

這個數(shù)組是以參數(shù)間隔的空格進行分隔的。第1個元素是當前運行的腳本文件名,也就是說,不管有沒有參數(shù),這個變量一定會有一個 $argv[0] 表示的是當前的腳本文件名。

在日常的開發(fā)需求中,其實使用這個變量就已經夠用了。但是這明顯不會是我們今天的主題,大家注意到上面的代碼中我們有很多參數(shù)是 -x=xxx 的形式,這種形式的參數(shù)是不是和 Linux 的命令選項非常像,沒錯,這就是我們今天要重點介紹的:從命令行參數(shù)列表中獲取選項。

getopt() 從命令行參數(shù)列表中獲取選項

其實就是這樣一個簡單的函數(shù),我們就可以像 Linux 的命令選項一樣獲取指定的命令值。而且不是像 $argv 按空格進行分隔,命令選項函數(shù)會將這些命令選項封裝成數(shù)組,組成以選項名為鍵,以等號后面的內容為值的數(shù)組,更加方便我們的使用。

// php 如何獲取PHP命令行參數(shù).php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt(’a:b:c:d:e:f:’));// Array// (// [b] => 2// [c] => 3// [d] => 4// )

是不是很神奇,而且非常直觀吧,我們直接就拿到了 b 、 c 、d 的內容并且是格式非常清晰的鍵值數(shù)組形式。有同學要問了,a 和 e 呢?還有后面的 ccc 、 ddd 呢?

首先要說明的是,ccc 和 ddd 不是標準的選項參數(shù),也就是說,這個函數(shù)接收的內容是以 - 開頭的選項,所以 ccc 和 ddd 不會在這里輸出,并且需要注意的是,非選項參數(shù)會中斷選項參數(shù)的獲取,在 ccc 之后如果繼續(xù)添加 - 開頭的選項也是無法獲取到的,這個我們后面還會看到。而 -- 開頭的選項參數(shù)呢?我們直接看下面的長選項功能。

長選項

// php 如何獲取PHP命令行參數(shù).php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt(’’, [’a:’,’b:’,’c:’,’d:’,’e:’,’f:’]));// Array// (// [a] => 1// [e] => 5// )

沒錯,getopt() 函數(shù)的第二個參數(shù)就是定義這種 -- 開頭的長選項的,而且需要注意的是,第一個參數(shù)是字符串類型,第二個長選項參數(shù)是數(shù)組類型的。那么我們把它們結合起來,就當然可以獲取到全部的參數(shù)信息啦!

// php 如何獲取PHP命令行參數(shù).php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt(’a:b:c:d:e:f:’, [’a:’,’b:’,’c:’,’d:’,’e:’,’f:’]));// Array// (// [a] => 1// [b] => 2// [c] => 3// [d] => 4// [e] => 5// )

OK,參數(shù)選項獲取沒問題了吧,細心的同學肯定又發(fā)現(xiàn)了一個問題,這個 getopt() 函數(shù)的參數(shù)中定義的選項名稱后面為啥都要加個冒號?這就涉及到我們的冒號規(guī)則了,請直接往下看。

冒號規(guī)則

getopt() 的前兩個參數(shù)都支持一套關于選項獲取的規(guī)則:

單獨的字符(不接受值) 后面跟隨冒號的字符(此選項需要值) 后面跟隨兩個冒號的字符(此選項的值可選)

我們還是直接通過代碼來看一下。

// 一// php 如何獲取PHP命令行參數(shù).php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt(’abcdef’));// Array// (// [b] => // [c] => // [d] => // )// 二// php 如何獲取PHP命令行參數(shù).php -fprint_r(getopt(’f::’));// Array// (// [f] => // )print_r(getopt(’f:’));// Array// (// )// 三// php 如何獲取PHP命令行參數(shù).php -f 22print_r(getopt(’f::’));// Array// (// [f] => // )print_r(getopt(’f:’));// Array// (// [f] => 22// )// 四// php 如何獲取PHP命令行參數(shù).php -f=22print_r(getopt(’f::’));// Array// (// [f] => 22// )print_r(getopt(’f:’));// Array// (// [f] => 22// )

這一段比較長,我們一塊一塊來看。首先是不帶冒號的 abcdef 寫法,返回的數(shù)組中都包含鍵,但沒有值,對應上面的規(guī)則就是不接受這些參數(shù)選項的值,你傳了這些參數(shù)選項也是只有鍵名而內容是空的。

第二段是定義了一個參數(shù),但是不給值,這時,雙冒號 :: 會有鍵名,而單冒號 : 則什么都沒有。

第三段是空格形式的選項值,雙冒號 :: 有鍵名但沒有值,單冒號 : 鍵值正常。

第四段是等號 = 形式的選項值,單雙冒號都正常接收到鍵值。

選項參數(shù)中斷

上文中我們提到過參數(shù)中斷的問題,就是在選項參數(shù)之后如果有一個非選項參數(shù)的參數(shù)出現(xiàn),getopt() 就無法再獲取到這個非選項參數(shù)后面的所有內容了。

// php 如何獲取PHP命令行參數(shù).php -f=22 aa -b=33// 選項的解析會終止于找到的第一個非選項,之后的任何東西都會被丟棄。// Array// (// [f] => 22// )

通過這個測試可以清晰的看出后面的 b 選項無法獲取。這時,如果我們想知道選項參數(shù)在什么地方或者因為哪個參數(shù)而中斷的話,就可以使用 getopt() 函數(shù)的第三個參數(shù)了。

// php 如何獲取PHP命令行參數(shù).php -f=22 aa -b=33$optind = null;getopt(’f:b:’, [], $optind);echo $optind, PHP_EOL; // 返回中斷位置的索引值,2echo $argv[$optind], PHP_EOL; // 等同于 $argv 的索引順序,aa

注釋已經寫得很清晰了,第三個參數(shù)會回調一個參數(shù)選項中斷位置的索引,并且這個索引是和 $argv 的索引順序位置一致的。

總結

說實話,在沒看文檔前真的只知道有一個 $argv 變量可以用來獲取命令行腳本的參數(shù),通過這次學習才發(fā)現(xiàn)原來還有一個這么強大的選項參數(shù)函數(shù)。學習的過程非常簡單,如何運用到真實的項目中才是關鍵所在,加油學習,努力實踐吧!

測試代碼:

github.com/zhangyue050…

以上就是PHP如何獲取命令行參數(shù)的詳細內容,更多關于PHP 獲取命令行參數(shù)的資料請關注好吧啦網其它相關文章!

標簽: PHP
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
久久人人九九| 欧美专区亚洲专区| 久久国产精品亚洲77777| 国产亚洲制服色| 丁香另类激情小说| 欧美日韩成人综合天天影院| 一区二区三区视频在线观看| 伊人成年综合电影网| 久久久久成人黄色影片| 国产成人在线免费观看| 在线亚洲人成电影网站色www| 亚洲老妇xxxxxx| 合欧美一区二区三区| 久久综合999| 成人国产精品免费网站| 欧美精品免费视频| 美日韩黄色大片| 美女爽到呻吟久久久久| 亚洲国产精品麻豆| 亚洲区国产区| 亚洲人xxxx| 红桃视频国产精品| 国产精品国产三级国产专播品爱网| 99re66热这里只有精品3直播| 欧美电影免费观看高清完整版在 | 国产亚洲一级| 亚洲免费av高清| 亚洲性图久久| 亚洲欧美色图小说| 日韩一区二区免费看| 椎名由奈av一区二区三区| 欧美午夜视频在线| 中文字幕不卡在线观看| 欧美韩国一区| 国产精品久久久久一区| 亚洲高清视频在线观看| 亚洲精品欧美激情| 国产精品一区亚洲| 亚洲mv在线观看| 色又黄又爽网站www久久| 日本成人在线看| 欧美亚洲一区二区在线观看| 经典三级在线一区| 精品久久久久久久久久久久包黑料| 不卡电影一区二区三区| 国产日韩在线不卡| 伊人久久成人| 亚洲国产aⅴ成人精品无吗| 色88888久久久久久影院野外| 麻豆精品视频在线| 91精品国产全国免费观看| 不卡视频在线看| 中文字幕在线观看一区二区| 中国成人亚色综合网站| 日韩精品一卡二卡三卡四卡无卡| 91黄视频在线| 国产米奇在线777精品观看| 欧美一级在线视频| a4yy欧美一区二区三区| 国产精品家庭影院| 亚洲欧洲精品一区二区三区波多野1战4| 一区二区三区在线观看国产| 日本韩国视频一区二区| 国产美女精品在线| 国产午夜亚洲精品午夜鲁丝片| 亚洲大胆在线| 日产国产欧美视频一区精品| 日韩亚洲欧美在线| 色综合天天性综合| 亚洲欧美福利一区二区| 色婷婷综合久久久中文字幕| 狠狠狠色丁香婷婷综合久久五月| 欧美一二三区精品| 国产精品大全| 日韩中文字幕亚洲一区二区va在线 | 综合欧美一区二区三区| 在线亚洲精品| 国产一区二区精品久久99| 国产日产欧美一区二区视频| 欧美综合国产| 懂色av一区二区三区蜜臀| 亚洲日本免费电影| 欧美私模裸体表演在线观看| 成人免费黄色在线| 一色屋精品亚洲香蕉网站| 玖玖视频精品| 99re视频精品| 一级女性全黄久久生活片免费| 欧美精品一二三四| 国产在线欧美日韩| 美国av一区二区| 欧美激情在线免费观看| 老牛国产精品一区的观看方式| 成人99免费视频| 亚洲国产综合在线| 日韩精品在线网站| 色综合中文字幕国产| 高潮精品一区videoshd| 美国三级日本三级久久99| 亚洲一二三区视频在线观看| 亚洲美女偷拍久久| 加勒比av一区二区| |精品福利一区二区三区| 欧美日韩精品三区| 日韩精品在线一区二区| 无码av中文一区二区三区桃花岛| 欧美日韩爆操| 日本欧美大码aⅴ在线播放| 久久久亚洲国产美女国产盗摄 | 亚洲欧洲av色图| 日韩美女视频在线| 成人性生交大片免费| 91最新地址在线播放| 久久99精品一区二区三区| 成人中文字幕合集| 国产精品成人网| www.亚洲激情.com| 日韩中文欧美在线| 91精品综合久久久久久| 五月天中文字幕一区二区| 久久人人超碰精品| 色一情一伦一子一伦一区| 成人av动漫在线| 日韩av一区二区三区四区| 欧美激情在线看| 欧美日韩精品欧美日韩精品| 日韩天天综合| 不卡的av在线播放| 奇米四色…亚洲| 亚洲私人黄色宅男| 精品理论电影在线| 色综合 综合色| 1024亚洲| 色综合亚洲欧洲| 国产精品一区在线| 肉色丝袜一区二区| 亚洲精品免费看| 久久精品亚洲一区二区三区浴池| 欧美日韩精品一区二区三区蜜桃| 在线综合视频| 欧美连裤袜在线视频| 国产高清精品久久久久| 午夜久久久久久| 最近日韩中文字幕| 久久精品日韩一区二区三区| 欧美丰满美乳xxx高潮www| 免费毛片一区二区三区久久久| 欧美日韩精品一区| 成人午夜免费视频| 精品一区二区精品| 日韩精品成人一区二区三区| 亚洲精品大片www| 中文字幕av不卡| 久久嫩草精品久久久精品| 91精品一区二区三区在线观看| 久久狠狠婷婷| 日韩视频在线观看国产| 亚洲欧美亚洲| 99v久久综合狠狠综合久久| 国产精品456露脸| 国产一区久久久| 看电影不卡的网站| 日韩福利视频网| 亚洲在线视频一区| 樱桃国产成人精品视频| 国产精品久久久久天堂| 国产婷婷一区二区| 久久综合狠狠综合久久激情| 日韩视频免费观看高清完整版在线观看| 色激情天天射综合网| 久久国产主播| 亚欧成人精品| 亚洲综合好骚| 国产精品外国| 国产一区二区久久久| 一本一道久久综合狠狠老精东影业 | 午夜精品剧场| 国产一区二区在线看| 九九热在线视频观看这里只有精品| 一区二区三区视频在线观看| 成人免费在线视频| 亚洲人成网站影音先锋播放| 亚洲日本va在线观看| 日韩美女视频19| 综合婷婷亚洲小说| 亚洲精选视频免费看| 亚洲美女偷拍久久| 亚洲一级片在线观看| 亚洲福利视频一区二区| 亚洲宅男天堂在线观看无病毒| 亚洲一区二区三区四区在线免费观看| 一区二区三区不卡视频在线观看| 亚洲欧美日韩中文播放| 亚洲免费观看高清完整版在线观看熊 | 亚洲美女网站| 伊人影院久久| 一区二区三区av| 午夜亚洲性色福利视频| 久久精品女人天堂| 欧美天堂亚洲电影院在线播放|