PHP語言是現今使用較為廣泛的腳本語言之一,它支持命令行模式的運行,這也就是說你可以不借助任何的瀏覽器或者服務器等其他應用,直接在終端輸入命令就可以調用PHP解釋器實現所需的功能。而在這個過程中,使用到的php argc argv這兩個概念就至關重要。下面我們詳細了解一下這兩個參數。
假設我們有這樣一段PHP解釋器可運行的代碼:
<?php echo "一共有" . $argc . "個參數傳遞給了這個腳本";
在這個代碼中,$argc是一個變量,它的值表示有多少參數傳遞給了這個腳本。那么我們如何傳遞參數呢?在命令行模式下,我們可以這樣運行這個PHP文件:
$ php 1.php a b c
在上方這條命令中,1.php是要運行的PHP文件,而字母a,b和c則是運行這個腳本時所傳遞的參數。運行之后,你會獲得以下輸出:
一共有4個參數傳遞給了這個腳本
其中,argc的值為4(因為php文件自身也算一個參數),$argv[0]的值是1.php,而$argv[1]、$argv[2]和$argv[3]的值是a、b和c,也就是我們手動傳遞給這個腳本的參數。
這個時候或許有些讀者會產生疑惑,$argv顯然是一組數組,而它的索引是從0開始的,那$argv[0]就不應該是a嗎?其實這是命令行傳參做了一個特殊的處理,它會把PHP文件的名稱作為第0個參數自動放在數組第一個位置。
在上例中,我們只是簡單的輸出了argc變量的值,實際情況中,我們可以使用這兩個參數來實現更加復雜和有趣的操作。下面,我們來舉個例子。
<?php $num = $argv[1]; // 將命令行傳入的第一個參數賦值給$num for ($i = 0; $i< $num; $i++) { echo '這是第' . ($i + 1) . '次循環' . PHP_EOL; }
在這個例子中,我們手動傳入了一個參數給腳本,并通過腳本來實現循環的功能,每次循環都會輸出當前是第幾次循環。這是一個比較簡單的例子,但足以說明使用php argc argv這兩個參數的強大。值得注意的是,手動傳入的參數都是字符串類型,如果需要使用數字類型需要進行類型轉換。
在以上的例子中,我們演示了如何在命令行模式下調用PHP解釋器來運行我們所編寫的腳本,并使用php argc argv這兩個參數來實現不同的功能。它們是命令行模式下傳參以及使用這些參數來實現不同的邏輯結構的基礎。對于PHP開發者來說,熟練掌握這兩個參數可以為項目的開發提供更多更加靈活的可能性。