2013-04-11 2 views
0

На моем сайте много javascript, наш встроенный код встроенного кода дизайнера в формате json, в js-файлах. Мне нужно это значение json для настройки, с php-сервера. и есть некоторые динамические изменения. Я скрыл это значение json в настройках php-массива. Их много. так что я написал функцию для преобразования в код PHP форматеjson to php code, нуждаются в улучшении функции

Я написал функцию toPhp, которая размещена в http://jsfiddle.net/2HKMU/

Я попытался преобразовать файл настроек один 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) 
    ) 
) 

Я хотел бы знать, я пропустил что-нибудь на этом преобразовании .. как мог Я улучшаю эту функцию более эффективно.

Я знаю json_decode, но я хотел бы оставить это setting json value in js file ,which made by designer в файле конфигурации php .. например: config_topfive.php. Я скопирую вставку консоль печати этой функции console.log(toPhp(config_topfive)) в PHP файл

так окончательные мой PHP-код в config_topfive.php выглядеть

<?php 

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

Почему бы не просто json_decode() его строки, поскольку он возвращает массив любого из них в json в любом случае oO – Dave

+0

Пока вы используете PHP 5.2+, json_decode должен делать все это за вас. – marksyzm

+0

вам нужно преобразовать js json в php array, то почему бы не использовать php json_decode() ... Я интерпретирую что-то неправильно ....? – alwaysLearn

ответ

3

почему вы не использовали json_decode и json_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); 
+0

нет ... это не я имею в виду.Я хотел бы сохранить 'значение json json в файле js, созданное разработчиком в файле конфигурации php .. например: config_topfive.php. Я скопирую этот вывод этой функции в файл php – rab

+0

, если я понимаю, что вы хотите сначала прочитать 'json' из' js', а затем «decode» его и выгрузить его как массив в 'config'. И вы хотите, чтобы' encode' array config as 'json' и напишите в' js' тоже –

+0

обновленный вопрос .. проверьте пожалуйста! – rab

1

json_decode позволит вам достичь того же результата и позволит вам передать «ассоциативный» bool, чтобы определить, хотите ли вы его как обычный массив или ассоциативный.

json_encode позволит вам выполнить обратное.