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

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

如何獲取PHP命令行參數

本篇文章給大家介紹一下獲取PHP命令行參數的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

如何獲取PHP命令行參數

如何獲取PHP命令行參數

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

$argv 獲得所有空格分隔的參數列表

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

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

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

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

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

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

// php 如何獲取PHP命令行參數.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 的內容并且是格式非常清晰的鍵值數組形式。有同學要問了,a 和 e 呢?還有后面的 ccc 、 ddd 呢?

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

長選項

// php 如何獲取PHP命令行參數.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() 函數的第二個參數就是定義這種 — 開頭的長選項的,而且需要注意的是,第一個參數是字符串類型,第二個長選項參數是數組類型的。那么我們把它們結合起來,就當然可以獲取到全部的參數信息啦!

// php 如何獲取PHP命令行參數.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,參數選項獲取沒問題了吧,細心的同學肯定又發現了一個問題,這個 getopt() 函數的參數中定義的選項名稱后面為啥都要加個冒號?這就涉及到我們的冒號規則了,請直接往下看。

冒號規則

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

  • 單獨的字符(不接受值)

  • 后面跟隨冒號的字符(此選項需要值)

  • 后面跟隨兩個冒號的字符(此選項的值可選)

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

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

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

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

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

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

選項參數中斷

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

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

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

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

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

總結

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

測試代碼:

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综合
夜夜精品视频| 亚洲毛片在线| 国产精品亚洲综合在线观看| 国产精品chinese| 亚洲综合不卡| 久久人人99| 亚州av乱码久久精品蜜桃| 久久久久久久久丰满| 国产成人1区| 久久蜜桃精品| 精品中文一区| 亚洲一区二区三区高清不卡| 午夜免费一区| 黄毛片在线观看| 国产综合激情| 一区二区三区国产在线| 久久精品国产68国产精品亚洲| 亚洲va在线| 中文字幕乱码亚洲无线精品一区| 快she精品国产999| 国产亚洲精品精品国产亚洲综合| 亚洲三级精品| 日韩精品三级| 日本在线不卡视频一二三区| 天海翼精品一区二区三区| 日韩精品一区二区三区中文 | 视频一区中文| 久久这里只有| 99精品电影| 免费在线看一区| 国产一区精品福利| 国产综合色区在线观看| 欧美日韩国产免费观看视频| 日韩精品亚洲专区| 国产一区二区亚洲| 美女久久一区| 欧美日韩在线播放视频| 国产精品黑丝在线播放| 久久精品免视看国产成人| 亚洲国产专区校园欧美| 亚洲大全视频| 国产精品美女在线观看直播| 精品中文字幕一区二区三区av| 精品国产精品久久一区免费式 | 黄色网一区二区| 日韩一级网站| 亚洲va在线| 韩国女主播一区二区三区| 久久久成人网| 蜜桃视频一区二区三区| 国产经典一区| 亚洲精品va| 欧美专区一区| 久久免费影院| 日本欧美在线| 国产亚洲精品v| 首页国产精品| 人人爱人人干婷婷丁香亚洲| 麻豆精品视频在线观看| 亚洲欧洲一区二区天堂久久| 亚洲h色精品| 久久中文视频| 福利一区在线| 精品久久中文| 日韩深夜视频| 国产高清不卡| 久久av影视| 精品国产不卡一区二区| 中文字幕中文字幕精品| 欧美亚洲国产激情| 蜜桃一区二区三区在线观看| 青草久久视频| 亚洲精品日韩久久| 亚洲一区激情| 国产一区二区久久久久| 亚洲制服欧美另类| 久久99性xxx老妇胖精品| 久久国产日韩| 国产麻豆一区| 精品精品国产三级a∨在线| 国产探花一区在线观看| 久久蜜桃av| 日韩和的一区二在线| 国产精品网站在线看| 麻豆精品在线视频| 日韩久久精品网| 日韩电影二区| 99国产精品免费视频观看| 伊人久久视频| 日韩激情中文字幕| 日本不卡高清| 午夜电影一区| 超碰在线99| 亚洲一区二区三区高清| 国产视频欧美| 美女视频一区在线观看| 国产传媒在线观看| 在线成人直播| 亚洲小说欧美另类婷婷| 香蕉久久夜色精品国产| 亚洲精一区二区三区| 高清一区二区三区av| 在线日韩视频| 蜜臀av一区二区三区| 精品一区二区三区中文字幕在线| 三级精品视频| 伊人精品一区| 日本a级不卡| 日本欧美在线看| 在线精品视频在线观看高清| 一区二区精品伦理...| 麻豆国产精品777777在线| 国产精品久久久久av蜜臀| 久久精品国产久精国产| 在线成人动漫av| 国产精品一区二区精品| 在线日韩成人| 久久69成人| 久久精品999| 日韩在线麻豆| 综合一区在线| 日韩高清不卡在线| 91精品丝袜国产高跟在线| 久久福利精品| 香蕉久久一区| 国产一级成人av| 国产精品夜夜夜| 91欧美在线| 日韩久久一区二区三区| 精品视频一区二区三区四区五区 | 亚洲视频二区| 色婷婷综合网| 国产日产精品一区二区三区四区的观看方式| 丝袜美腿亚洲一区| 视频一区二区欧美| 蜜桃视频免费观看一区| 玖玖玖国产精品| 亚洲人亚洲人色久| 蘑菇福利视频一区播放| 日本欧美在线看| 日韩激情中文字幕| 日韩久久精品| 999精品一区| 麻豆久久精品| 欧美一级网址| 日韩三级精品| 国产精品毛片视频| 欧美日韩色图| 91看片一区| 中文久久精品| 国产精品欧美日韩一区| 伊人久久视频| 亚洲影院天堂中文av色| 日韩欧美2区| 国产欧美日韩在线观看视频| 国产精品久久亚洲不卡| 免费不卡中文字幕在线| 日韩av三区| 三级精品视频| 卡一精品卡二卡三网站乱码| 日韩欧美中文| 欧美一区激情| 亚洲综合电影一区二区三区| 国产精品久久| 免费的成人av| 午夜久久福利| 国产精品久久国产愉拍| 久久在线91| 亚洲精选av| 欧美精品导航| 国产一区日韩一区| 四虎成人精品一区二区免费网站 | 亚洲欧美伊人| 日本伊人久久| 蜜桃av在线播放| 蜜臀91精品一区二区三区| 久久av免费看| 久久成人高清| 色偷偷偷在线视频播放| 国产日本亚洲| 另类亚洲自拍| 久久aⅴ国产紧身牛仔裤| 欧美日韩免费看片| 国产视频一区二区在线播放| 天海翼亚洲一区二区三区| 夜夜嗨网站十八久久| 日韩中文在线播放| 亚洲精品动态| 国产日韩欧美三区| 蜜桃久久久久| 亚洲女同av| 亚洲尤物在线| 国产欧美精品久久| 欧洲在线一区| 日韩精品亚洲专区| 青青青免费在线视频| 国产精品高颜值在线观看| 欧美日韩一区二区三区不卡视频 | 99视频精品全部免费在线视频| 在线国产一区|