在页面准备好,获取dom创建期间创建的javascript数组

i am creating javascript array during dom creation using arr.push. but on page ready function, it returns empty array

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

As PHP will be executed before any javascript you can write the javascript variables out without needing to use the array.push method. However, the question used a php variable $shorten_url - where is that defined? I assume it is the value from the foreach loop

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>