2009-06-10 16 views
16

के साथ कमांड लाइन से php स्क्रिप्ट चलाएं मैं कमांड लाइन से एक PHP स्क्रिप्ट चलाने के लिए चाहता हूं, लेकिन मैं उस स्क्रिप्ट के लिए एक चर सेट करना चाहता हूं।परिवर्तनीय

ब्राउज़र संस्करण: script.php?var=3

आदेश लाइन: php -f script.php (लेकिन मैं इसे कैसे 3 युक्त चर देते हैं?)

उत्तर

30

स्क्रिप्ट:

<?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); 

कमान:

$ 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" 
} 

इसके अलावा, using PHP from the command line पर एक नज़र डालें।

+0

ठीक काम करता है ... अन्य उत्तरों भी काम करेंगे लेकिन यह पहला था और यह परिवर्तनीय नामों और डेटा की लंबी सूची होने से बेहतर दिखता है। – Hintswen

4

साथ ही argc का उपयोग करने और argv रूप Ionut G. Stan ने संकेत दिया, आप भी नाशपाती मॉड्यूल Console_Getopt जो बाहर यूनिक्स शैली कमांड लाइन विकल्प पार्स कर सकते हैं इस्तेमाल कर सकते हैं। अधिक जानकारी के लिए this article देखें।

वैकल्पिक रूप से, Zend_Console_Getopt कक्षा में ज़ेंड फ्रेमवर्क में समान कार्यक्षमता है।

6
argv इसके अलावा

(Ionut उल्लेख किया), आप वातावरण चरों का उपयोग कर सकते हैं: आप नाम वाले पैरामीटर रखना चाहते हैं

$var = getenv("var"); 
5

:

उदाहरण के लिए:

var = 3 php -f test.php 

test.php में लगभग var = 3 & foo = bar ($argv द्वारा प्रस्तावित स्थितित्मक पैरामीटर की बजाय) getopt() आपकी सहायता कर सकता है।

3

कई समाधान तर्कों को उनके आदेश के अनुसार चर में डाल देते हैं। उदाहरण के लिए,

myfile.php 5 7 

5 को पहले चर में और 7 को अगले चर में डाल देगा।

मैं नामित चाहते थे तर्क:

myfile.php a=1 x=8 

ताकि मैं उन्हें PHP कोड में चर नाम के रूप में उपयोग कर सकते हैं।

लिंक कि Ionuţ जी स्टेन http://www.php.net/manual/en/features.commandline.php

पर दे दी है मुझे जवाब दिया।

पीएसयू डॉट edu पर sep16:

आप आसानी से आदेश पंक्ति तर्क $ _GET चर में parse_str() फ़ंक्शन का उपयोग करके पार्स कर सकते हैं।

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

यह वास्तव में व्यवहार करता है जैसे आप सीजीआई-पीएचपी के साथ अपेक्षा करेंगे।

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

इस सरणी के लिए '1' और $ _GET [ 'बी'] के लिए $ _GET [ 'एक'] सेट हो जाएगा ('2', '3')।