在页面上,获取在创建dom期间创建的Javascript数组


On page ready, get Javascript array created during dom creation

在使用arr.push创建dom期间,我正在创建一个Javascript数组。但是,在page ready函数中,它返回一个空数组。

<script type="text/javascript">      
    var short_urls = [];
</script>
 $(document).ready(function() {  
      console.log(short_urls);
});
<?
    foreach ($d_json['result'] as $key => $value) {
        ?>
<script>
    short_urls.push("<? echo $shorten_url  ?>");
</script>
<?
}
?>
<script type="text/javascript">      
        var short_urls = [];
$(document).ready(function() {  
          console.log(short_urls);
    });
</script>

<?
    foreach ($d_json['result'] as $key => $value) {
        ?>
<script>
    short_urls.push("<? echo $shorten_url  ?>");
</script>
<?
                             }
                             ?>

由于PHP将在任何javascript之前执行,因此无需使用array.push方法即可写出javascript变量。然而,问题使用了php变量$shorten_url——它在哪里定义?我假设它是来自foreach循环的值

Approach #1
-----------
<script type="text/javascript">      
    var short_urls = [];
    <?php
        foreach( $d_json['result'] as $key => $value ) {
            $shorten_url='???';
            echo "short_urls.push('{$shorten_url}');";
        }
    ?>
    $( document).ready( function() { console.log( short_urls ); } );
</script>

Approach #2
-----------
<script type="text/javascript">      
    <?php
        $tmp=array();
        foreach( $d_json['result'] as $key => $value ) {
            $shorten_url='???';
            $tmp[]=$shorten_url;
        }
        echo "var short_urls = ['".implode("','",$tmp)."'];";
    ?>
    $( document).ready( function() { console.log( short_urls ); } );
</script>