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 が言ったように、JS ファイル内に PHP を埋め込むことはできません。ただし、JS ファイルに関数を追加して JSON データをロードし、そのデータを PHP ファイルのスクリプト タグに埋め込むことができます。

example.js:

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

example.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>

編集: これは、ページの読み込み時に 1 回だけデータを 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 に答える