将数组转换为json - smarty

时间:2013-09-20 09:32:26

标签: javascript php json smarty

假设我有一个数组(从我的php代码动态生成)

array (size=4)
  0 => 
    array (size=1)
      'Sat' => string '6' (length=1)
  1 => 
    array (size=1)
      'Sun' => string '10' (length=2)

我希望得到以下内容以将其置于javascript变量

        {
            "x": 'Sat',
            "y": 6
        }{
            "x": 'Sun',
            "y": 10
        }

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:3)

您可以使用json_encode(),并将其传递给javascript变量,如:

$json = json_encode($your_array);

和js:

var json_frm_php = <?php echo $json; ?>

答案 1 :(得分:2)

你可以使用&#39; json_encode&#39;直接在smarty中,或者只是分配一个json_encode()&#39; ed变量...

e.g。

// in your PHP script :
$myArray = array(
    array("x" => "Sat", "y" => "6",),
    array("x" => "Sun", "y" => "10",),
);
$smarty->assign('jsondata', json_encode($myArray));
$smarty->assign('rawdata', $myArray);
$smarty->display('template.tpl');

然后在模板中:

<script> 
var data1 = {$jsondata};
var data2 = {$rawdata|@json_encode};
....
</script>

将呈现如下:

<script>
var data1 = [{"x":"Sat","y":"6"},{"x":"Sun","y":"10"}];
var data2 = [{"x":"Sat","y":"6"},{"x":"Sun","y":"10"}];
...
</script>

另请参阅:http://www.smarty.net/docsv2/en/language.modifiers.tpl

答案 2 :(得分:1)

这有帮助吗?

$myArray = array(
    array(    
        "x" => "Sat",
        "y" => "6",        
    ),
    array(    
        "x" => "Sun",
        "y" => "10",        
    )
);

$json =  json_encode($myArray);

print_r($json);

输出:[{“x”:“星期六”,“y”:“6”},{“x”:“太阳”,“y”:“10”}]

答案 3 :(得分:1)

我想你想要输入一个javascript变量

    {
        "x": 'Sat',
        "y": 6
    },{
        "x": 'Sun',
        "y": 10
    }

因此您必须首先将变量$jsonArray=json_encode($Array)包装在PHP代码中,然后

{literal}
<script>
    var json = JSON.parse('{/literal}{$campaign->getStatsMembers()}{literal}'),final=[],final=[];
for(var key1 in json){
    for(var key2 in json[key1]){
        var tmp={"x":key2,"y":json[key1][key2]};
        final.push(tmp);
    }
}

console.log(final);
</script>
{/literal}

顺便说一下,我曾经jQuery,或许有一种更方便的方式来循环你的json变量!