2010-03-31 11 views
5

में सहयोगी सरणी पास करें मैं एक टेम्पलेटिंग सिस्टम बना रहा हूं और मैं फ्लाई पर कॉलिंग फ़ंक्शंस के साथ किसी समस्या में भाग रहा हूं।call_user_func_array (...)

जब मैं निम्न प्रयास करें:

$args = array(
    4, 
    'test' => 'hello', 
    'hi' 
); 

तुम्हें पता है .. कुछ संख्यात्मक तत्वों कुछ साहचर्य तत्वों,

call_user_func_array($function, $args); 

कुछ इस तरह करने के लिए सरणी धर्मान्तरित:

$args = array(
    4, 
    'hello', 
    'hi' 
); 

इस तरह के सरणी को पार करने के अलावा इस के आसपास कोई रास्ता है:

$args = array(
    4, 
    array('test' => 'hello'), 
    'hi' 
); 

धन्यवाद! मैट

+0

क्या आप दिखा सकते हैं कि '$ फ़ंक्शन' में '$ args' के साथ क्या किया जा रहा है? –

+0

$ फ़ंक्शन केवल एक स्ट्रिंग है जैसे 'to_lowercase' या कुछ .. – Matt

उत्तर

15

वहाँ कहीं नहीं सरणी कुंजी क्योंकि जाने के लिए है:

call_user_func_array($function, $args); 

इस के बराबर है:

$function(4, 'hello', 'hi'); 

आप call_user_func() बजाय इस्तेमाल कर सकते हैं:

call_user_func($function, $args); 

तो दिया एक तर्क के साथ एक समारोह, आप सहयोगी सरणी प्राप्त कर सकते हैं:

function func($args) { 
// $args is complete associative array 
} 

ध्यान दें कि call_user_func() भी एक से अधिक तर्क ले जा सकते हैं - प्रत्येक एक तर्क के रूप में बुलाया कार्य करने के लिए पारित हो जाएगा।

+1

जोड़ने के लिए और कुछ नहीं। मेरा हटाना, तुम्हारा – Gordon

+0

ओह वास्तव में? मुझे मूर्खतापूर्ण लगता है- मुझे पता है कि मैंने call_user_func_array() पर निर्णय लेने से पहले call_user_func() को आजमाया है, मुझे लगता है कि मेरी आवश्यकताओं में बदलाव होना चाहिए। अगर मैं func_get_args ($ args) करता हूं तो क्या यह एसोसिएटिव सरणी की सरणी लौटाएगा? – Matt

+0

हाँ, func_get_args() == सरणी ($ args) उपर्युक्त उदाहरण में –

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