Напечатать массив как код - программирование
Подтвердить что ты не робот

Напечатать массив как код

Я хочу преобразовать большой файл yaml в массив PHP исходный код. Я могу читать код yaml и возвращать массив PHP, но с var_dump ($ array) я получаю псевдокод в качестве вывода. Я хотел бы напечатать массив как действительный php-код, поэтому я могу скопировать его в мой проект и вырезать yaml.

4b9b3361

Ответ 2

Вы можете использовать var_export, serialize (с unserialize на конце резервирования) или даже json_encode (и использовать json_decode на принимающей стороне). У последнего есть преимущество в выпуске, который может обрабатываться любым, что может обрабатывать JSON.

Ответ 3

Не знаю, почему, но я не мог найти удовлетворяющий код где-нибудь.

Быстро это написал. Дайте мне знать, если вы найдете какие-либо ошибки.

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

Надеюсь, это поможет кому-то.

Ответ 4

Другой способ отобразить массив в виде кода с отступом.

Протестировано только с массивом, который содержит строку, целое число и массив.


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.']';
}