print an array as code

前端 未结 4 1567
时光取名叫无心
时光取名叫无心 2020-12-05 09:28

I want to convert a big yaml file to PHP array source code. I can read in the yaml code and get back a PHP array, but with var_dump($array) I get pseudo cod

4条回答
  •  有刺的猬
    2020-12-05 09:47

    Don't know why but I could not find satisfying code anywhere.

    Quickly wrote this. Let me know if you find any errors.

      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."
    "; } }; 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();

    Hope this helps someone.

提交回复
热议问题