2012-01-04 20 views
5

मैंने समाधान के लिए हाय और कम खोज की है। मेरे पास एक गतिशील बहुआयामी सरणी है जिसे मुझे तोड़ने और urlencode की आवश्यकता है। वस्तुओं की संख्या बदल जाएगी लेकिन उनके पास हमेशा एक ही कुंजी होगी।एक बहुआयामी सरणी urlencode कैसे करें?

$formFields = Array ( 
[0] => Array ([form_name] => productID [form_value] => 13) 
[1] => Array ([form_name] => campaign [form_value] => [email protected]) 
[2] => Array ([form_name] => redirect [form_value] => http://example.com)) 

प्रत्येक सरणी में एक फॉर्म नाम और एक फॉर्म वैल्यू है।

यह है कि मैं क्या पाने के लिए कोशिश कर रहा हूँ है:

$desired_results = 
productID => 13 
campaign => [email protected] 
redirect => http://example.com 

जब भी मैं कोशिश करते हैं और उन्हें अलग मैं अंत: FORM_NAME => productId या ऐसा ही कुछ।

मैं परिणाम लेने के लिए और उसके बाद urlencode उन्हें कोशिश कर रहा हूँ:

productID=13&campaign=email&gmail.com&redirect=http://example.com& 
+0

क्यों नहीं बस '$ fromFields = सरणी ('productId' => 13, ...)'? –

+0

स्क्रिप्ट नहीं जान पाएगी कि चाबियाँ क्या हैं। वे किस पृष्ठ पर कॉल कर रहे हैं इसके आधार पर वे बदल जाएंगे। यह एक WordPress में मेटा डेटा स्टोर है और इस पर निर्भर करता है कि कौन सी पोस्ट स्क्रिप्ट को कॉल कर रही है .. $ कुंजी बदल जाएगी। – krazymatty

+0

शायद किसी को इसे कॉल करने के लिए गतिशील सरणी को स्टोर करने के बेहतर तरीके पर एक सुझाव है। – krazymatty

उत्तर

3

यह चाबियों के नामों के बावजूद मूल्यों को वापस कर देगा।

$result = array(); 

foreach ($formFields as $key => $value) 
{ 
    $tmp = array_values($value); 
    $result[$tmp[0]] = $tmp[1]; 
} 
print(http_build_query($result)); 

मुख्य सरणी के माध्यम से foreach छोरों, चर $value में subarrrays भंडारण। फ़ंक्शन array_values प्रत्येक सरणी से सभी मानों को एक नई संख्यात्मक सरणी के रूप में वापस कर देता है। [Form_name] का मान पहले इंडेक्स में संग्रहीत किया जाएगा, [form_value] दूसरे में।

http_build_query फ़ंक्शन में निर्मित एक urlencoded स्ट्रिंग लौटाएगा।

+0

वाह ने काम किया! मैं अभी तक इसे समझ में नहीं आता लेकिन यह काम करता है! बहुत बहुत धन्यवाद। – krazymatty

16

आप serialize और unserialize उपयोग कर सकते हैं:

$str = urlencode(serialize($formFields)); 

तो यह डिकोड करने के लिए और:

$formFields = unserialize(urldecode($str)); 
+3

यदि यह सिर्फ एक सरणी है, तो 'json_encode() '/' json_decode() '' serialize() 'के लिए प्राथमिक है क्योंकि इसकी एक सरल संरचना है और परिणाम एक छोटी स्ट्रिंग में है। यह और भी पोर्टेबल है (जैसे 'जेएस' और इस तरह के – konsolenfreddy

-1

urlencode सरणी कुंजी और मानों के लिए कस्टम फ़ंक्शन।

function urlencode_array($array){ 
    $out_array = array(); 
    foreach($array as $key => $value){ 
    $out_array[urlencode($key)] = urlencode($value); 
    } 
return $out_array; 
} 
-1
<!-- Encode entire array here --> 

function encode(&$item, $key) { 
$item = rawurlencode($item); 
} 

array_walk_recursive($input_array, 'encode'); 
+0

यह ऐरे देता है। – srokatonie

संबंधित मुद्दे