0

假设我有一个数组(从我的 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

4 回答 4

3

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

$json = json_encode($your_array);

在js中:

var json_frm_php = <?php echo $json; ?>
于 2013-09-20T09:34:32.743 回答
2

您可以直接在 smarty 中使用 'json_encode',或者只分配一个 json_encode()'ed 变量...

例如

// 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

于 2015-07-02T14:22:58.940 回答
1

这有帮助吗?

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

$json =  json_encode($myArray);

print_r($json);

输出:[{"x":"Sat","y":"6"},{"x":"Sun","y":"10"}]

于 2013-09-20T09:49:56.247 回答
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变量!

于 2013-09-20T10:11:55.863 回答