将php多维数组分配给javascript数组

时间:2011-12-02 19:15:51

标签: php javascript multidimensional-array

  

可能重复:
  assigning multidimensional php array to javascript array

我有一个2D php数组,如下所述,我正在尝试将其分配给java脚本数组。

<?php 
$taskArray = array( 
           array( taskName => "t1", 
                      startDate => 11/01/2011,
                      duration => 10  ),
               array( taskName => "t2", 
                      startDate => 11/02/2011,
                      duration => 5  ),
               array( taskName => "t3", 
                      startDate => 11/05/2011,
                      duration => 8  ),
             );
?>



<script type="text/javascript"> 
function getArray(){

 var a=new Array;

 <?php

   $x = count($taskArray);

   for($i=1;$i<=count($taskArray); $i++){
     echo "a[$i][taskName]='".$taskArray[$i]["taskName"]."';\n";
     echo "a[$i][startDate]='".$taskArray[$i]["startDate"]."';\n";
     echo "a[$i][duration]='".$taskArray[$i]["duration"]."';\n";
   }

  ?>            
}
</script>
在上述回显线中使用键字符串时出现

问题。什么是正确的连接? 注意:echo "a[$i]='".$taskArray[$i]."';\n";有效

2 个答案:

答案 0 :(得分:1)

jValdron的评论是最简单的方法,但如果你真的想自己做,我认为你唯一想到的就是你生成的javascript中的一些引用。 a[$i][taskName]会将taskName视为javascript中的变量。我相信你想要

echo "a[$i]['taskName']=".$taskArray[$i]["taskName"]."';\n";
// etc...

另外,我注意到还有另外两件事。首先,你从索引1开始,这实际上是数组中的第二件事。这可能是有意的,但我见过这一次的大部分时间都是偶然的。第二,为什么要将计数存储在$x中,然后每次通过循环重新计算?

所以,如果我不得不猜测,我会说循环写的最佳方式是

for($i=0; $i<$x; $i++) {
    //etc...
}

我不是热衷于调用它$x(我更喜欢更有意义的名称,如$len$arrLen或其他),但这并不是什么大不了的事。这个例子。

编辑:我刚注意到你的函数没有return语句。总而言之,该函数应如下所示:

<?php 
$taskArray = array( 
           array( taskName => "t1", 
                      startDate => 11/01/2011,
                      duration => 10  ),
               array( taskName => "t2", 
                      startDate => 11/02/2011,
                      duration => 5  ),
               array( taskName => "t3", 
                      startDate => 11/05/2011,
                      duration => 8  ),
             );
?>



<script type="text/javascript"> 
function getArray(){

 var a=new Array;

 <?php

   $len = count($taskArray);

   for($i=1;$i<=$len; $i++){
     echo "a[$i]['taskName']='".$taskArray[$i]["taskName"]."';\n";
     echo "a[$i]['startDate']='".$taskArray[$i]["startDate"]."';\n";
     echo "a[$i]['duration']='".$taskArray[$i]["duration"]."';\n";
   }

  ?>
  return a;         
}
</script>

答案 1 :(得分:1)

将您的代码更改为:

<?php 
    $taskArray = array( 
       array( taskName => "t1", 
              startDate => 11/01/2011,
              duration => 10  ),
       array( taskName => "t2", 
              startDate => 11/02/2011,
              duration => 5  ),
       array( taskName => "t3", 
              startDate => 11/05/2011,
              duration => 8  ),
       );
?>


<script type="text/javascript"> 
function getArray(){

var a=new Array;

<?php
    $x = count($taskArray);

    for($i=1;$i<count($taskArray); $i++){
        echo ("a[$i]['taskName']='".$taskArray[$i]['taskName']."';\n");
        echo ("a[$i]['startDate']='".$taskArray[$i]['startDate']."';\n");
        echo ("a[$i]['duration']='".$taskArray[$i]['duration']."';\n");
    }
?>            
    return a;
}
</script>