我想将一个大的yaml文件转换为PHP数组源代码。我可以在yaml代码中读取并返回一个PHP数组,但是使用var_dump($ array)我得到伪代码作为输出。我想将数组打印为有效的PHP代码,因此我可以将其复制粘贴到我的项目中并抛弃yaml。
答案 0 :(得分:99)
您正在寻找var_export
。
答案 1 :(得分:3)
您可以使用var_export,serialize(在预留结束时使用反序列化),甚至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.=' ';
}
for($i=1; $i<$deep; $i++){
$indent_close.=' ';
}
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.']';
}