распечатать массив как код - PullRequest
51 голосов
/ 28 февраля 2011

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

Ответы [ 3 ]

105 голосов
/ 28 февраля 2011

Вы ищете var_export.

3 голосов
/ 28 февраля 2011

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

2 голосов
/ 25 января 2013

Не знаю почему, но я нигде не смог найти подходящий код.

Быстро написал это.Сообщите мне, если обнаружите какие-либо ошибки.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...