2012-05-18 72 views
0

我试图让我的结果显示在循环内部,但由于某些原因,它始终显示在我的循环外部,当我使我= a =和我添加。 。然而,如果我使用。= for my =并从字符串末尾移除。$ _ str,它会显示在我的循环内部,但不会反转foreach循环的输出,这是我试图实现的平均目标。循环结果显示在循环外

我已评论我遇到问题的区域。请随时注释掉其中一行来测试,看看我在说什么,代码已准备好进行测试。

 <script type='text/javascript' src='http://www.google.com/jsapi'></script> 
     <?php 
     $file = file_get_contents("http://ichart.finance.yahoo.com/table.csv?s=GOOG&a=03&b=18&c=2004&d=04&e=17&f=2012&g=d&ignore=.csv"); 

      $stockcontent = str_replace('Date,Open,High,Low,Close,Volume,Adj Close', '', $file); 
      $stockcontent = trim($stockcontent); 

      $stockcontentex = str_getcsv($stockcontent, "\n"); 

      $i = 0; 
      $j = 0; 

      $_str = ''; 
      $_str .= "<script type='text/javascript'> 
       google.load('visualization', '1', {'packages':['annotatedtimeline']}); 
       google.setOnLoadCallback(drawChart); 
       function drawChart() { 
       var data = new google.visualization.DataTable(); 
       data.addColumn('date', 'Date'); 
       data.addColumn('number', 'High'); 
       data.addColumn('number', 'Low'); 
       data.addRows(["; 
      foreach($stockcontentex as $stockexplode){ 
       $stockex = explode(',',$stockcontentex[$i++]); 
       $stockexdate = explode('-', $stockex[0]); 
       $stockYear = $stockexdate[0]; 
       $stockMonth = $stockexdate[1]; 
       $stockDay = $stockexdate[2]; 
       $stockHigh = $stockex[2]; 
       $stockLow = $stockex[3]; 

    //right here is where I am having the problem. 
$_str = '[new Date('.$stockYear.', '.$stockMonth.', '.$stockDay.'), '.$stockHigh.', '.$stockLow.'],'. "\n".$_str; 


    //$_str .= '[new Date('.$stockYear.', '.$stockMonth.', '.$stockDay.'), '.$stockHigh.', '.$stockLow.'],'. "\n"; 

       } 

       $_str .= "]); 

       var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div')); 
       chart.draw(data, {displayAnnotations: false}); 
       } 
      </script> 
      <div id='chart_div' style='width: 700px; height: 240px;'></div>"; 

       echo $_str; 
     ?> 

谢谢任何​​能够帮助我的人。

+0

您是否打算将“$ _str ='[new Date('。$ stockYear。',...”)替换为您标记为问题的行上的“$ _str。= ...”? –

+1

你真的应该阅读[HEREDOC](http://php.net/heredoc)和[json_encode()](http://php.net/json_encode)。直接从PHP生成javascript风险很高 - 一个单个放错位的javascript元字符,你打破了整个javascript代码块。 –

+0

@tom_yes_tom是我要评论,因为它不会扭转结果。 – user874185

回答

1
<script type='text/javascript' src='http://www.google.com/jsapi'></script> 
    <?php 
    $file = file_get_contents("http://ichart.finance.yahoo.com/table.csv?s=GOOG&a=03&b=18&c=2004&d=04&e=17&f=2012&g=d&ignore=.csv"); 

     $stockcontent = str_replace('Date,Open,High,Low,Close,Volume,Adj Close', '', $file); 
     $stockcontent = trim($stockcontent); 

     $stockcontentex = str_getcsv($stockcontent, "\n"); 

     $i = 0; 
     $j = 0; 

     $_str = ''; 
     $_str .= "<script type='text/javascript'> 
      google.load('visualization', '1', {'packages':['annotatedtimeline']}); 
      google.setOnLoadCallback(drawChart); 
      function drawChart() { 
      var data = new google.visualization.DataTable(); 
      data.addColumn('date', 'Date'); 
      data.addColumn('number', 'High'); 
      data.addColumn('number', 'Low'); 
      data.addRows(["; 

     $tstr = ""; 
     foreach($stockcontentex as $stockexplode){ 
      $stockex = explode(',',$stockexplode); // no need to do this $stockcontentex[$i++]); here 
      $stockexdate = explode('-', $stockex[0]); 
      $stockYear = $stockexdate[0]; 
      $stockMonth = $stockexdate[1]; 
      $stockDay = $stockexdate[2]; 
      $stockHigh = $stockex[2]; 
      $stockLow = $stockex[3]; 

      //right here is where I am having the problem. 
      $tstr = '[new Date('.$stockYear.', '.$stockMonth.', '.$stockDay.'), '.$stockHigh.', '.$stockLow.'],'. "\n".$tstr; 


      } 
     $_str = $_str.$tstr; // $x .= $xx; is just a shotcut for $x = $x.$xx; 
     $_str .= "]); 

     var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div')); 
      chart.draw(data, {displayAnnotations: false}); 
      } 
     </script> 
     <div id='chart_div' style='width: 700px; height: 240px;'></div>"; 

     echo $_str; 
    ?> 
+0

'$ str。= $ new_str'只是'$ str = $ str。$ new_str'没什么特别的。 –