久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

淺談PHP中獲取命令行參數(shù)的方法

在PHP CLI 命令行中,有需要像網頁的 GET 、 POST 一樣為命令行腳本提供參數(shù);那么如何獲取這些命令行的參數(shù)呢?下面本篇文章就來帶大家了解一下PHP中獲取命令行參數(shù)的方法,介紹一下$argv變量和getopt()函數(shù)。

淺談PHP中獲取命令行參數(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 -f print_r(getopt('f::')); // Array // ( //     [f] =>  // ) print_r(getopt('f:')); // Array // ( // )  // 三 // php 如何獲取PHP命令行參數(shù).php -f 22 print_r(getopt('f::')); // Array // ( //     [f] =>  // ) print_r(getopt('f:')); // Array // ( //     [f] => 22 // )  // 四 // php 如何獲取PHP命令行參數(shù).php -f=22 print_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; // 返回中斷位置的索引值,2 echo $argv[$optind], PHP_EOL; // 等同于 $argv 的索引順序,aa

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

總結

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

測試代碼: https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96PHP%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0.php

推薦學習:《PHP視頻教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
国产欧美欧美| 国产一区二区三区免费在线 | av成人国产| 国产精品亚洲一区二区三区在线观看| 国产精品视频一区二区三区四蜜臂| 蜜臀久久久99精品久久久久久| 国产精品婷婷| 亚洲精品少妇| 久久国产乱子精品免费女| 国产欧美一区二区三区国产幕精品 | 不卡在线一区| 欧美精品一二| 在线日韩成人| 国产视频一区二区在线播放| 日本午夜精品一区二区三区电影| 中文字幕一区二区三区四区久久| 亚洲tv在线| 久久精品国产福利| 亚洲电影有码| 亚洲精品综合| 精品亚洲二区| 亚洲调教视频在线观看| 蜜臀国产一区二区三区在线播放| 婷婷综合网站| 欧美日本久久| 136国产福利精品导航网址| 日韩中文字幕1| 久久av超碰| 国产精品毛片| 精品久久99| 中文在线日韩| 日本免费久久| 日韩激情一区二区| 色婷婷色综合| 中文字幕av一区二区三区人| 97精品资源在线观看| 国产高清一区| 久久狠狠亚洲综合| 亚洲欧美网站| 麻豆理论在线观看| 日本视频中文字幕一区二区三区| 亚洲黄色中文字幕| 日韩成人精品一区| 国产精品二区不卡| 日韩在线网址| 在线亚洲免费| av在线日韩| 精品一区二区三区中文字幕| 亚洲专区欧美专区| 精品捆绑调教一区二区三区| 亚洲欧洲日韩| 亚洲激情av| 亚洲播播91| 日韩精品一区二区三区免费视频| 亚洲午夜精品久久久久久app| 卡一卡二国产精品| 国产乱码精品一区二区三区四区 | 免费观看久久av| 色一区二区三区四区| 国产情侣一区在线| 91综合久久爱com| 日本亚洲最大的色成网站www| 欧美亚洲国产激情| 日韩免费久久| 亚洲成人二区| 亚洲黄页一区| 久久成人精品| 亚洲免费中文| 蜜臀a∨国产成人精品| 免费成人在线影院| 亚洲一区二区三区久久久| 亚洲第一精品影视| 999久久久免费精品国产| 国产成人精品一区二区免费看京 | 精品国产欧美日韩一区二区三区| 国产麻豆精品久久| 91综合久久爱com| 麻豆视频一区二区| 国产videos久久| 久久国产欧美| 在线国产日韩| 国产精品sm| 亚洲播播91| 亚洲影院天堂中文av色| 国产日韩欧美三区| 日韩黄色大片| 亚洲免费福利一区| 国产成年精品| 蜜臀久久99精品久久久久宅男 | 国产激情在线播放| 五月婷婷亚洲| 欧美片网站免费| 福利一区二区三区视频在线观看| 欧美理论视频| 国产精品一区二区三区av| 三上悠亚国产精品一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 美女精品网站| 国产成人a视频高清在线观看| 日韩一区二区三区免费播放| 性感美女一区二区在线观看| 欧美 日韩 国产一区二区在线视频 | 蜜臀久久99精品久久久画质超高清 | 久久午夜精品| 日本麻豆一区二区三区视频| 亚洲午夜天堂| 亚洲免费一区三区| 日韩在线观看不卡| 欧美在线资源| 国产图片一区| 99久久精品网站| 视频一区日韩| 电影91久久久| 天堂va蜜桃一区二区三区| 国产九九精品| 在线视频观看日韩| 美女久久网站| 精品91福利视频| 欧美精品黄色| 久久久久伊人| 午夜在线播放视频欧美| 麻豆一区二区在线| 亚洲视频www| 国产成人久久| 欧美在线不卡| 亚洲福利免费| 精品一区二区三区视频在线播放| 国产亚洲一区二区手机在线观看| 悠悠资源网久久精品| 久久影视三级福利片| 久久影院一区| 欧美一级二级视频| 91久久久精品国产| 中文在线资源| 久久av网址| 日本a级不卡| 免费在线成人网| 99精品视频在线| 成人影视亚洲图片在线| 免费人成在线不卡| 今天的高清视频免费播放成人| 精品一二三区| 日本午夜精品久久久久| 日韩精品网站| 国产精品多人| 国产精品欧美一区二区三区不卡 | sm捆绑调教国产免费网站在线观看| 日韩1区2区日韩1区2区| 蜜臀av在线播放一区二区三区| 午夜国产精品视频| 五月天久久777| 精品捆绑调教一区二区三区 | 日韩av一区二区三区四区| 亚洲一级大片| 日韩av午夜在线观看| 欧美视频久久| 国产精品夜夜夜| 久久av影视| 日本99精品| 国产黄色精品| 日本一二区不卡| 激情自拍一区| 日韩一区二区三区精品| 日韩av影院| 国产+成+人+亚洲欧洲在线| 日韩精品欧美大片| 91精品国产自产在线丝袜啪| 欧美视频久久| 欧美亚洲自偷自偷| 久草精品视频| 91精品蜜臀一区二区三区在线| 成人免费电影网址| 午夜久久久久| 欧美大黑bbbbbbbbb在线| 一区二区国产精品| 国产精品一区高清| 日本黄色精品| 91国语精品自产拍| 青青伊人久久| 国产在线欧美| 欧美精品中文| 国产二区精品| 国产精品毛片aⅴ一区二区三区| 国产成人精品一区二区三区免费| 国产一区二区三区自拍| 91亚洲无吗| 日韩亚洲精品在线| 美女高潮久久久| 久久精品电影| 久久中文字幕一区二区| 在线综合亚洲| 国产96在线亚洲| 日本免费一区二区视频| 欧美二三四区| 成人日韩av| 国产免费播放一区二区| 欧美日韩国产欧| av日韩中文| 精品一区二区男人吃奶| 亚洲一区二区三区四区电影|