programing

배열을 코드로 인쇄

iphone6s 2023. 8. 15. 10:54
반응형

배열을 코드로 인쇄

저는 큰 yaml 파일을 PHP 배열 소스 코드로 변환하고 싶습니다.yaml 코드를 읽고 PHP 배열을 가져올 수 있지만 var_dump($array)를 사용하면 의사 코드를 출력으로 받습니다.저는 제 프로젝트에서 복사 붙여넣기를 하고 yaml을 버릴 수 있도록 배열을 유효한 php 코드로 인쇄하고 싶습니다.

당신은 찾고 있습니다.

var_export, serialize(예약 측에서 serialize 해제) 또는 json_encode(수신 측에서 json_decode 사용)를 사용할 수 있습니다.마지막 것은 JSON을 처리할 수 있는 모든 것으로 처리할 수 있는 출력을 생산할 수 있다는 장점이 있습니다.

이유는 모르겠지만 만족스러운 코드를 찾을 수 없었습니다.

빨리 썼어요.오류가 발견되면 제게 알려주세요.

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

이것이 누군가에게 도움이 되기를 바랍니다.

배열을 들여쓰기가 있는 코드로 표시하는 또 다른 방법입니다.

문자열, 정수 및 배열을 포함하는 배열로만 테스트됩니다.


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

언급URL : https://stackoverflow.com/questions/5139637/print-an-array-as-code

반응형