2009-06-10 56 views

Trả lời

30

Script:

<?php 

// number of arguments passed to the script 
var_dump($argc); 

// the arguments as an array. first argument is always the script name 
var_dump($argv); 

Command:

$ php -f test.php foo bar baz 
int(4) 
array(4) { 
    [0]=> 
    string(8) "test.php" 
    [1]=> 
    string(3) "foo" 
    [2]=> 
    string(3) "bar" 
    [3]=> 
    string(3) "baz" 
} 

Ngoài ra, hãy xem using PHP from the command line.

+0

hoạt động tốt ... các câu trả lời khác cũng sẽ hoạt động nhưng đây là lần đầu tiên và làm cho nó trông đẹp hơn việc có danh sách dài các tên và dữ liệu biến. – Hintswen

4

Cũng như sử dụng argcargv như được chỉ ra bởi Ionut G. Stan, bạn cũng có thể sử dụng các mô-đun PEAR Console_Getopt mà có thể phân tích ra unix-style tùy chọn dòng lệnh. Xem this article để biết thêm thông tin.

Ngoài ra, có chức năng tương tự trong Khung công tác Zend trong lớp Zend_Console_Getopt.

6

Bên cạnh argv (như Ionut đề cập), bạn có thể sử dụng các biến môi trường:

Ví dụ:

var = 3 php -f test.php 

Trong test.php:

$var = getenv("var"); 
5

Nếu bạn muốn giữ lại tên thông số gần giống như var = 3 & foo = bar (thay vì các thông số vị trí được cung cấp bởi $argv) getopt() có thể hỗ trợ bạn.

3

Rất nhiều giải pháp đặt đối số vào các biến theo thứ tự của chúng. Ví dụ:

myfile.php 5 7 

sẽ đặt biến số 5 vào biến đầu tiên và 7 vào biến tiếp theo.

tôi muốn đặt tên đối số:

myfile.php a=1 x=8 

để tôi có thể sử dụng chúng như tên biến trong các mã PHP.

Các liên kết Ionuţ G. Stan đã ở http://www.php.net/manual/en/features.commandline.php

đã cho tôi câu trả lời.

sep16 tại PSU dot edu:

Bạn có thể dễ dàng phân tích đối số dòng lệnh vào biến $ _GET bằng parse_str() chức năng.

<?php 
parse_str(implode('&', array_slice($argv, 1)), $_GET); 
?> 

Nó hoạt động giống như bạn mong đợi với cgi-php.

$ php -f somefile.php a=1 b[]=2 b[]=3 

Điều này sẽ đặt $ _GET ['a'] thành '1' và $ _GET ['b'] thành mảng ('2', '3').

Các vấn đề liên quan