0

私のサイトには、フロントエンド デザイナーが設定コードを json 形式で js ファイルに埋め込んだ JavaScript がたくさんあります。php server から、この設定json値が必要です。いくつかの動的な変更があります。この設定のjson値をphp配列に変換しました..それらはたくさんあります。だから私はphpコード形式に変換する関数を書きました

http://jsfiddle.net/2HKMU/toPhpに投稿されている関数を作成しました

1つのjsファイル設定をphpコードに変換しようとしました..これは機能します..

var config_topfive = {
    "type":"topfive", 
    "options":{ 
        "ascending":false, "percentage":true, "limits":[25,5] 
    }
};

console.log( toPhp( config_topfive ) );

印刷する

array(
    "type" => "topfive", 
    "options" =>  array(
        "ascending" => false, 
        "percentage" => true, 
        "limits" => array(25,5)
    )
)

知りたいのですが、この変換で何か見逃しています..どうすればこの機能をより良く改善できますか..

私は知っていますが、これ をphp構成ファイルにjson_decode保存したいと思います..例: . この関数のコンソール出力をコピーしてphpファイルに貼り付けますsetting json value in js file ,which made by designerconfig_topfive.phpconsole.log( toPhp( config_topfive ) )

最終的に私のphpコードは次のconfig_topfive.phpようになります

<?php

return array(
    "type" => "topfive", 
    "options" =>  array(
        "ascending" => false, 
        "percentage" => true, 
        "limits" => array(25,5)
    )
);
4

2 に答える 2

3

使わなかった理由 json_decodejson_encode

http://www.php.net/manual/en/function.json-decode.php

http://www.php.net/manual/en/function.json-encode.php

サンプル json_decode

 $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
 print_r(json_decode($json));

サンプルjson_encode

$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

 echo json_encode($arr);

出力

 {"a":1,"b":2,"c":3,"d":4,"e":5}

編集:

私はこのテストを書いた

function MakeArray(Json){
  this.JArray=Json;
  this.PArray=function(ar){
      for (var J in ar) {
            var Type=typeof(ar[J])
            if(Type=="string"){
                ar[J]="\""+ar[J]+"\"";
            }else if( Type== "object") {
                if(ar[J] instanceof Array){
                   ar[J]=this.PArray(ar[J]);
                   //ar[J]="\""+J+"\"=>array("+ar[J].join(',')+")";
                   ar[J]="array("+ar[J].join(',')+")";
                }else{
                   ar[J]="\""+J+"\"=>array("+this.MArray(ar[J])+")";
                }
                //ar[J]=this.MArray(ar[J]);       
            }
      }
      return ar;
  }
  this.MArray=function(IArray){
      var Output=Array();
      var Count=0;
      for (var i in IArray) {
          var Type=typeof(IArray[i]);
          if( Type== "object") {
              if(IArray[i] instanceof Array){
                  IArray[i]=this.PArray(IArray[i]);
                  Out="\""+i+"\"=>array("+IArray[i].join(',')+")";
              }else{
                  Out="\""+i+"\"=>array("+this.MArray(IArray[i])+")";
              }
          }else{
              if(Type=="string" || typeof(i)=="string"){
                  Out="\""+i+"\"=>\""+IArray[i]+"\"";
              }else if(Type=="number"){
                  Out=IArray[i];
              }else{
                  Out="\""+i+"\"=>"+IArray[i]; 
              }

          }
          Output[Count++]=Out;
      }
      return Output.join(',');

  }
  return "array("+this.MArray(this.JArray)+")";

}
document.getElementById('php').innerHTML =MakeArray(config_topfive);
于 2013-04-11T11:22:55.517 に答える