2011-02-28 4 views
46

के रूप में एक सरणी मुद्रित करें, मैं एक बड़ी yaml फ़ाइल को PHP सरणी स्रोत कोड में कनवर्ट करना चाहता हूं। मैं yaml कोड में पढ़ सकता हूं और एक PHP सरणी वापस प्राप्त कर सकता हूं, लेकिन var_dump ($ array) के साथ मुझे आउटपुट के रूप में छद्म कोड मिलता है। मैं सरणी को वैध PHP कोड के रूप में मुद्रित करना चाहता हूं, इसलिए मैं इसे अपने प्रोजेक्ट में पेस्ट कॉपी कर सकता हूं और yaml को हटा सकता हूं।कोड

+0

जिज्ञासा से, आप यम क्यों खोना चाहते हैं? यह एक शानदार प्रारूप है जिसे आप और अन्य हाथ से संपादित कर सकते हैं। :-) – Benson

+0

प्रत्येक अनुरोध पर एक वाईएएमएल फ़ाइल को पार्स करना अपेक्षाकृत धीमा है यदि आप इसे 'php array' सहित 'तुलना' करते हैं। मेरी वर्तमान परियोजना की गति में और अधिक महत्वपूर्ण है। –

उत्तर

89

आप var_export के लिए देख रहे हैं।

+1

यानी: '$ string_representation = var_export ($ complex_array, TRUE);' – ErichBSchulz

+1

बहुत बहुत धन्यवाद। – Iscariot

+0

var_export के बजाय सरणी() के बजाय [] के लिए कोई तरीका है? – Oliboy50

3

आप इस्तेमाल कर सकते हैं var_export, serialize (आरक्षित अंत पर unserialize के साथ), या यहाँ तक कि json_encode (और प्राप्त अंत पर json_decode उपयोग करें)। आखिरी व्यक्ति को आउटपुट उत्पादन का लाभ होता है जिसे JSON को संभालने वाले किसी भी चीज़ द्वारा संसाधित किया जा सकता है।

1

पता नहीं क्यों मुझे कहीं भी संतोषजनक कोड नहीं मिला।

इसे तुरंत लिखा है। अगर आपको कोई त्रुटि मिलती है तो मुझे बताएं।

function printCode($array, $path=false, $top=true) { 
    $data = ""; 
    $delimiter = "~~|~~"; 
    $p = null; 
    if(is_array($array)){ 
     foreach($array as $key => $a){ 
     if(!is_array($a) || empty($a)){ 
      if(is_array($a)){ 
      $data .= $path."['{$key}'] = array();".$delimiter; 
      } else { 
      $data .= $path."['{$key}'] = \"".htmlentities(addslashes($a))."\";".$delimiter; 
      } 
     } else { 
      $data .= printCode($a, $path."['{$key}']", false); 
     }  
     } 
    } 

    if($top){ 
     $return = ""; 
     foreach(explode($delimiter, $data) as $value){ 
     if(!empty($value)){ 
      $return .= '$array'.$value."<br>"; 
     } 
     }; 
     return $return; 
    } 

    return $data; 
    } 

    //REQUEST 
    $x = array('key'=>'value', 'key2'=>array('key3'=>'value2', 'key4'=>'value3', 'key5'=>array())); 
    echo printCode($x); 

    //OUTPUT 
    $array['key'] = 'value'; 
    $array['key2']['key3'] = 'value2'; 
    $array['key2']['key4'] = 'value3'; 
    $array['key2']['key5'] = array(); 

उम्मीद है कि यह किसी की सहायता करेगा।