2011-08-18 66 views
-2

我需要用PHP循环创建一个数组。Javascript中的数组问题

它看起来像:

[ utcdate1:[ series1:[value], series2:[value], series3:[value], utcdate2:[ series1:[value], series2:[value], series3:[value], etc..... ] 

这里是我的代码:

totals = { <?php 
    for ($i=0; $i < count($date); $i++) { 
     echo "Date.UTC(". 
      $year[$i].",". 
      $month[$i].",". 
      $day[$i]. 
      "):[ Movies:[".$nomovies[$i]. 
      "], Shows:[".$noshows[$i]. 
      "], Music:[".$nomusic[$i]. 
      "] ]"; 
     if ($i < (count($date)-1)) { 
      echo ","; 
     } 
    } ?> }; 

为什么没有此代码的工作?

+3

这是Java吗? PHP?我很困惑。你能否澄清这个问题 - 很多**? –

+1

请删除Java标记。 – pablosaraiva

+4

对于你需要在多行上格式化你的代码,这是不可能的。其次,我建议你在PHP中设置数组,然后使用json_encode将其转换为javascript .. – Stephen

回答

1

您无法即时计算JS属性名称。试试这个:

totals = {}; 
<?php 
for ($i=0; $i < count($date); $i++) { 
    echo "totals[Date.UTC(". 
     $year[$i].",". 
     $month[$i].",". 
     $day[$i]. 
     ")] = [ Movies:[".$nomovies[$i]. 
     "], Shows:[".$noshows[$i]. 
     "], Music:[".$nomusic[$i]. 
     "] ];"; 
} ?> 

编辑: 虽然我们在这,JavaScript是不是Java。 JavaScript运行在浏览器中,是HTML5的未来。 Java通常运行在服务器上,作为程序或applet,现在是静态类型的传统编程语言。它们在语法和概念上都非常不同。

因此,下次标记威利。

+1

非常感谢,你的工作。谢谢其他人。而现在我知道Java是不是一样的东西,作为JavaScript :) – timramich

+0

很高兴听到这一点。欢迎来到stackoverflow! – Sheepy

0

JavaScript不支持关联数组(哈希),因此您不能将其转换为数组。你也很困惑,你并没有试图创建一个JavaScript数组,显然你正在尝试创建一个JSON对象。

你可以这样说:

这是第一种方法:

totals = { 
    <?php 
     for ($i = 0; $i < count($date); $i++) 
     { 
      $tempDate = new DateTime("{$year[$i]}-{$month[$i]}-{$day[$i]}"); 
      echo $tempDate->getTimestamp() . ": {" 
       . "Movies: [{$nomovies[$i]}]," 
       . "Shows: [{$noshows[$i]}]," 
       . "Music: [{$nomusic[$i]}]," 
      // Add trailing comma, until last element in array is reeached. 
      if ($i < count($date)-1) 
      { 
       echo ","; 
      } 
     } 
     // Close the object. 
     echo . "}"; 
    ?> 
}; 

这是第二个:

<?php 
    // Init an empty array. 
    $someArray = array(); 
    // Fill the array up with the correct structure and all. 
    for ($i = 0; $i < count($date); $i++) 
    { 
     // Init a date object with the desired time. 
     $tempDate = new DateTime("{$year[$i]}-{$month[$i]}-{$day[$i]}"); 
     // Convert the time to seconds and use as a hash in the array. 
     $someArray[ $tempDate->getTimestamp() ] = array(
      "Movies" => array($nomovies[$i]), 
      "Shows" => array($noshows[$i]), 
      "Music" => array($nomusic[$i]), 
     ); 
    } 
    // Encode that bad boy into a JSON object. 
    echo "totals = " . json_encode($someArray) . ";"; 

?> 

我我的答案更新,我觉得这是什么你真的想要。这种方式将日期转换为自时代日期以来的秒数,并且可以安全地用作JSON对象中的属性/键。

+0

我想知道这个问题是否让JSON和普通的JS对象混淆不清,实际上,特别是因为timramich知道日期部分给了他麻烦。 – Sheepy

+0

他试图将日期用作JSON中的一个属性,我从未测试过,但我认为这不会起作用。问题是我们不知道他想结束什么。 – b01