将数组打印为代码

时间:2011-02-28 08:25:01

标签: php yaml

我想将一个大的yaml文件转换为PHP数组源代码。我可以在yaml代码中读取并返回一个PHP数组,但是使用var_dump($ array)我得到伪代码作为输出。我想将数组打印为有效的PHP代码,因此我可以将其复制粘贴到我的项目中并抛弃yaml。

4 个答案:

答案 0 :(得分:99)

您正在寻找var_export

答案 1 :(得分:3)

您可以使用var_exportserialize(在预留结束时使用反序列化),甚至json_encode(并在接收端使用json_decode)。最后一个具有产生输出的优点,可以由任何可以处理JSON的东西处理。

答案 2 :(得分:2)

不知道为什么,但我无法在任何地方找到令人满意的代码。

快速写下来。如果您发现任何错误,请告诉我。

  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();

希望这有助于某人。

答案 3 :(得分:0)

将数组显示为带有缩进的代码的另一种方法。

仅对包含字符串,整数和数组的数组进行了测试。


function bo_print_nice_array($array){
    echo '$array=';
    bo_print_nice_array_content($array, 1);
    echo ';';
}
function bo_print_nice_array_content($array, $deep=1){
    $indent = '';
    $indent_close = '';
    echo "[";
    for($i=0; $i<$deep; $i++){
        $indent.='&nbsp;&nbsp;&nbsp;&nbsp;';
    }
    for($i=1; $i<$deep; $i++){
        $indent_close.='&nbsp;&nbsp;&nbsp;&nbsp;';
    }
    foreach($array as $key=>$value){
        echo "<br>".$indent;
        echo '"'.$key.'" => ';
        if(is_string($value)){
            echo '"'.$value.'"';
        }elseif(is_array($value)){
            bo_print_nice_array_content($value, ($deep+1));
        }else{
            echo $value;
        }
        echo ',';
    }
    echo '<br>'.$indent_close.']';
}

相关问题