Tôi muốn chạy tập lệnh PHP từ dòng lệnh, nhưng tôi cũng muốn đặt biến cho tập lệnh đó.Chạy tập lệnh php từ dòng lệnh có biến số
trình duyệt phiên bản: script.php?var=3
dòng lệnh: php -f script.php
(nhưng làm thế nào để tôi cho nó biến chứa 3?)
Tôi muốn chạy tập lệnh PHP từ dòng lệnh, nhưng tôi cũng muốn đặt biến cho tập lệnh đó.Chạy tập lệnh php từ dòng lệnh có biến số
trình duyệt phiên bản: script.php?var=3
dòng lệnh: php -f script.php
(nhưng làm thế nào để tôi cho nó biến chứa 3?)
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.
Cũng như sử dụng argc và argv 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.
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");
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').
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