दिलचस्प पोस्ट
LINQ + फ़ॉरचा vs बनाम + अगर प्रति ब्लॉक धागे निर्धारित करने के लिए CUDA, प्रति ग्रिड ब्लॉक वेब साइट और एक वेब अनुप्रयोग के बीच अंतर क्या है? विशाल बफड़े छवि बनाने बूटस्ट्रैप 3 नेबबार संक्षिप्त करें जावा में लॉगिन उपयोगकर्ता नाम प्राप्त करें प्रपत्र तत्व को कुछ फ़ील्ड भेजने से कैसे रोकें जिसे हम नहीं चाहते हैं? क्या मैं एक दूसरे के संबंध में दो सूचियों को सॉर्ट कर सकता हूँ? आप एक समाधान में कई परियोजनाओं के बीच स्क्रिप्ट कैसे साझा करते हैं? लाइन द्वारा एक फ़ाइल लाइन में (अपडेट) टेक्स्ट को कैसे बदलें "ढीली वस्तुओं" क्या हैं जो कि जीआईटी जीयूआई का उल्लेख है? एंड्रॉइड एडिटटेक्स्ट में अपरकेस लिखने के लिए मजबूर कैसे किया जाता है? रेल + पोस्टग्रेज़ में मनमाने समय के अंतराल के द्वारा रिकॉर्ड की गणना करने का सर्वोत्तम तरीका मैं फ़ायरफ़ॉक्स में event.srcElement कैसे काम कर सकता हूं और इसका क्या मतलब है? एक आवेदन को छोड़कर पर frowned है?

यूआरएल पैरामीटर के रूप में पासिंग एरेज़

सबसे अच्छा तरीका क्या है कि मैं एक सरणी को यूआरएल पैरामीटर के रूप में पास कर सकता हूं? मैं सोच रहा था कि यह संभव है:

$aValues = array(); $url = 'http://www.example.com?aParam='.$aValues; 

या इसके बारे में कैसे:

 $url = 'http://www.example.com?aParam[]='.$aValues; 

Ive उदाहरण पढ़ा है, लेकिन मुझे यह गन्दा लगता है:

 $url = 'http://www.example.com?aParam[]=value1&aParam[]=value2&aParam[]=value3'; 

Solutions Collecting From Web of "यूआरएल पैरामीटर के रूप में पासिंग एरेज़"

एक बहुत आसान समाधान है: http_build_query() । यह एक एसोसिएटिव सरणी के रूप में आपके क्वेरी पैरामीटर लेता है:

 $data = array( 1, 4, 'a' => 'b', 'c' => 'd' ); $query = http_build_query(array('aParam' => $data)); 

वापस होगा

 string(63) "aParam%5B0%5D=1&aParam%5B1%5D=4&aParam%5Ba%5D=b&aParam%5Bc%5D=d" 

http_build_query() आपके लिए सभी आवश्यक बचने का प्रबंधन करता है ( %5B => [ और %5D => ] ), तो यह स्ट्रिंग एक aParam[0]=1&aParam[1]=4&aParam[a]=b&aParam[c]=d बराबर है aParam[0]=1&aParam[1]=4&aParam[a]=b&aParam[c]=d

संपादित करें: ऊपर स्टीफन के समाधान को याद मत करो, जो बहुत ही उपयोगी http_build_query() फ़ंक्शन का उपयोग करता है: https://stackoverflow.com/a/1764199/179125

घुटने से बचने के बारे में सही है हालांकि, ऐसा करने का एक आसान तरीका है:

 $url = 'http://example.com/index.php?'; $url .= 'aValues[]=' . implode('&aValues[]=', array_map('urlencode', $aValues)); 

यदि आप एक एसोसिएटिव सरणी के साथ ऐसा करना चाहते हैं, तो इसके बजाय इसे आज़माएं:

PHP 5.3+ (लैम्ब्डा फंक्शन)

 $url = 'http://example.com/index.php?'; $url .= implode('&', array_map(function($key, $val) { return 'aValues[' . urlencode($key) . ']=' . urlencode($val); }, array_keys($aValues), $aValues) ); 

PHP <5.3 (कॉलबैक)

 function urlify($key, $val) { return 'aValues[' . urlencode($key) . ']=' . urlencode($val); } $url = 'http://example.com/index.php?'; $url .= implode('&amp;', array_map('urlify', array_keys($aValues), $aValues)); 

सीरिअलाइज़ फ़ंक्शन का उपयोग करने के लिए सबसे आसान तरीका होगा।

यह भंडारण या हस्तांतरण के लिए किसी भी चर क्रमबद्ध करता है। आप इसके बारे में पीएचपी मैनुअल – सीरियलाइज़ में पढ़ सकते हैं

unserialize का उपयोग करके चर को बहाल किया जा सकता है

तो यूआरएल के पास जाने के लिए जो आप उपयोग करते हैं:

$url = urlencode(serialize($array))

और आप उपयोग चर को पुनर्स्थापित करने के लिए

$var = unserialize(urldecode($_GET['array']))

हालांकि यहां सावधान रहें एक GET अनुरोध का अधिकतम आकार 4k तक सीमित है, जो कि आप किसी यूआरएल में सरणियों को पार करके आसानी से पार कर सकते हैं।

इसके अलावा, यह वास्तव में डेटा को पारित करने का सबसे सुरक्षित तरीका नहीं है! आपको संभवतः बजाय सत्रों का उपयोग करना चाहिए।

आउटपुटिंग ( urlencode ) के दौरान कृपया अपने चर को बचें।

और आप सिर्फ एक सरणी मुद्रित नहीं कर सकते हैं, आपको अपने यूआरएल को किसी तरह से लूप का उपयोग करना होगा

 $url = 'http://example.com/index.php?' $first = true; foreach($aValues as $key => $value) { if(!$first) $url .= '&amp'; else $first = false; $url .= 'aValues['.urlencode($key).']='.urlencode($value); } 

मैं ऐसा सीरिजलाइज्ड डाटा बेस 64 एन्कोडेड के साथ करता हूं। सबसे अच्छा और सबसे छोटा रास्ता, मुझे लगता है urlencode बहुत बर्बाद कर रहा है अंतरिक्ष और आप केवल 4k है

  <?php $array["a"] = "Thusitha"; $array["b"] = "Sumanadasa"; $array["c"] = "Lakmal"; $array["d"] = "Nanayakkara"; $str = serialize($array); $strenc = urlencode($str); print $str . "\n"; print $strenc . "\n"; ?> 

print $str . "\n"; a:4:{s:1:"a";s:8:"Thusitha";s:1:"b";s:10:"Sumanadasa";s:1:"c";s:6:"Lakmal";s:1:"d";s:11:"Nanayakkara";} और

print $strenc . "\n"; देता है

 a%3A4%3A%7Bs%3A1%3A%22a%22%3Bs%3A8%3A%22Thusitha%22%3Bs%3A1%3A%22b%22%3Bs%3A10%3A%22Sumanadasa%22%3Bs%3A1%3A%22c%22%3Bs%3A6%3A%22Lakmal%22%3Bs%3A1%3A%22d%22%3Bs%3A11%3A%22Nanayakkara%22%3B%7D 

इसलिए यदि आप इस $array को URL के माध्यम से page_no_2.php पास करना चाहते हैं,

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

 $url ='http://page_no_2.php?data=".$strenc."'; 

मूल सरणी पर वापस लौटने के लिए, urldecode() होना चाहिए, फिर urldecode() , इस तरह page_no_2.php में:

  <?php $strenc2= $_GET['data']; $arr = unserialize(urldecode($strenc2)); var_dump($arr); ?> 

देता है

  array(4) { ["a"]=> string(8) "Thusitha" ["b"]=> string(10) "Sumanadasa" ["c"]=> string(6) "Lakmal" ["d"]=> string(11) "Nanayakkara" } 

फिर से: डी

यह सीधे उत्तर नहीं है क्योंकि इसका जवाब पहले ही दिया गया है, लेकिन हर कोई डेटा भेजने के बारे में बात कर रहा था, लेकिन कोई भी वास्तव में नहीं कहा था कि जब वह वहां जाता है, और मुझे यह काम करने के लिए आधे घंटे अच्छा लगे। तो मैंने सोचा कि मैं यहाँ मदद करेगा।

मैं इस बिट को दोहराता हूँ

 $data = array( 'cat' => 'moggy', 'dog' => 'mutt' ); $query = http_build_query(array('mydata' => $data)); $query=urlencode($query); 

जाहिर है आप इसे http://www.someurl.com?x=$query से बेहतर प्रारूपित करेंगे

और डेटा वापस पाने के लिए

 parse_str($_GET['x']); echo $mydata['dog']; echo $mydata['cat']; 
 **in create url page** $data = array( 'car' => 'Suzuki', 'Model' => '1976' ); $query = http_build_query(array('myArray' => $data)); $url=urlencode($query); echo" <p><a href=\"index2.php?data=".$url."\"> Send </a><br /> </p>"; **in received page** parse_str($_GET['data']); echo $myArray['car']; echo '<br/>'; echo $myArray['model'];