5

是否可以通过 json_encode 对这个 php 数组进行 JSON 处理?因为这个 php 数组被调用$data并且当我这样做时..

var myJson = <?php echo json_encode($data) ?>;
console.log(myJson);

在javascript中,它给了我错误。我想知道 JSON 可以/不能做什么类型的 php 数组是否有限制。

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Tanner, C. kickoff 60 yards to the DU5, Butler, L return 14 yards to the DU19 (Johnson, I.).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => GT35
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 10
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => K
                        )

                    [drive] => 1
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Renfree, S pass complete to Vernon, C for 6 yards to the DU25 (Thomas, Je.).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU19
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => DU
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 10
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => P
                        )

                    [drive] => 2
                )

            [1] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Renfree, S pass incomplete to Scott, D.
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU25
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => DU
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 4
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => P
                        )

                    [drive] => 2
                )

            [2] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Renfree, S pass complete to Scott, D for 6 yards to the DU31, 1ST DOWN DU (Thomas, Je.).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU25
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => DU
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 4
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => P
                        )

                    [drive] => 2
                )

            [3] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Renfree, S pass complete to Scott, D for no gain to the DU31 (Sweeting, R.).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU31
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => DU
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 10
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => P
                        )

                    [drive] => 2
                )

            [4] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Renfree, S pass incomplete to Vernon, C.
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU31
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => DU
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 10
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => P
                        )

                    [drive] => 2
                )

            [5] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Renfree, S sacked for loss of 4 yards to the DU27 (Gotsis, A.).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU31
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => DU
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 10
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => P
                        )

                    [drive] => 2
                )

            [6] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Monday, W punt 53 yards to the GT20, Golden, J. return 8 yards to the GT28 (Reeves, D).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU27
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => DU
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 14
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => U
                        )

                    [drive] => 2
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Smith, O. rush for 8 yards to the GT36 (Brown, Ky).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => GT28
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 10
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => R
                        )

                    [drive] => 3
                )

            [1] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Sims, D. rush for 6 yards to the GT42, 1ST DOWN GT (Sink, N).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => GT36
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 2
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => R
                        )

                    [drive] => 3
                )

            [2] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Washington, T. pass incomplete to Smith, O..
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => GT42
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 10
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => P
                        )

                    [drive] => 3
                )

            [3] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Washington, T. rush for 2 yards to the GT44 (Anunike, K).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => GT42
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 10
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => R
                        )

                    [drive] => 3
                )

            [4] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Greene, J. rush for 6 yards to the 50 yardline (Canty, W).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => GT44
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 8
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => R
                        )

                    [drive] => 3
                )

            [5] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Smith, O. rush for 16 yards to the DU34, 1ST DOWN GT (Canty, W;France, C).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => GT50
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 2
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => R
                        )

                    [drive] => 3
                )

            [6] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Smith, O. rush for 5 yards to the DU29 (France, C).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU34
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 10
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => R
                        )

                    [drive] => 3
                )

            [7] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Laskey, Z. rush for 3 yards to the DU26 (France, C).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU29
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 5
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => R
                        )

                    [drive] => 3
                )

            [8] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Washington, T. rush for 3 yards to the DU23, 1ST DOWN GT (France, C).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU26
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 2
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => R
                        )

                    [drive] => 3
                )

            [9] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Washington, T. pass complete to Smith, O. for 21 yards to the DU2, 1ST DOWN GT (Butler, L).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU23
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 10
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => P
                        )

                    [drive] => 3
                )

            [10] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Washington, T. rush for 1 yard to the DU1 (Brown, Ky;Foxx, J).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU02
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 0
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => R
                        )

                    [drive] => 3
                )

            [11] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Washington, T. rush for no gain to the DU1 (Cockrell, R).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU01
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 0
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => R
                        )

                    [drive] => 3
                )

            [12] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Washington, T. rush for 1 yard to the DU0, TOUCHDOWN, clock 06:51.
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU01
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 0
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => R
                        )

                    [drive] => 3
                )

            [13] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Tanner, C. kick attempt good.
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => DU03
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 0
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => X
                        )

                    [drive] => 3
                )

            [14] => Array
                (
                    [text] => SimpleXMLElement Object
                        (
                            [0] => Tanner, C. kickoff 54 yards to the DU11, Butler, L return 23 yards to the DU34 (Harrell, A.).
                        )

                    [spot] => SimpleXMLElement Object
                        (
                            [0] => GT35
                        )

                    [ball] => SimpleXMLElement Object
                        (
                            [0] => GT
                        )

                    [togo] => SimpleXMLElement Object
                        (
                            [0] => 0
                        )

                    [type] => SimpleXMLElement Object
                        (
                            [0] => K
                        )

                    [drive] => 3
                )

        )
)
4

5 回答 5

8

首先,您需要在某个安装了 PHP 的 Apache 服务器上的 PHP 文件。制作一个像这样的文件:

localhost:8888/myfile.php

<?php
    $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}
?>

然后你的 JavaScript(在这个例子中我使用jQuery):

$.getJSON('http://localhost:8888/myfile.php', function(data) {
    console.log(data);
});

这应该是让 PHP 数组进入 JavaScript 的开始。

于 2013-03-18T23:10:29.027 回答
4

正如@Allendar 所说,您不能将 PHP 嵌入到 JS 文件中。但是,您可以在 JS 文件中添加一个函数来加载 JSON 数据,然后将该数据嵌入到 PHP 文件的脚本标记中。

例子.js:

var loadJsonFromPHP = function(json) {
    console.log(json);
}

例子.php:

<?php
    $data = array("some", "test", "data");
?>
<html>
    <head>
        <script src="example.js"></script>
        <script>
            loadJsonFromPHP(<?php echo json_encode($data) ?>);
        </script>
    </head>
    <body></body>
</html>

编辑:这是假设您只需要在页面加载时将数据导入 JS 一次,在这种情况下,您可以跳过发出 AJAX 请求。

于 2013-03-18T23:12:39.117 回答
3

将 PHP JSON 传递给 Javascript 并读取

var stuff = <?php print json_encode($datajson); ?>; var arr = new Array(); arr= JSON.parse(stuff); document.write( arr[0].cust_code );

于 2014-03-10T06:51:34.830 回答
0

我从未尝试过这样做,但我认为您遇到了问题,因为 json_encode 返回一个 json 编码的字符串。然后,您需要在 javascript 方面解码此字符串。尝试以下操作:

var myJson = JSON.parse(<?php echo json_encode($data) ?>);
console.log(myJson);
于 2013-03-18T23:00:16.523 回答
-1

JSON 可以处理任何类型的数组(尽管它将关联数组转换为对象)。您可能面临的问题是,当数据仅在 Javascript 上可用时,您尝试使用 PHP 进行输出。

澄清一下:一旦页面加载完毕,PHP 什么也做不了。只有javascript可以在客户端处理事情,PHP只在服务器上工作,不知道客户端的状态。

于 2013-03-18T22:59:26.107 回答