可能重复:
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";
有效
答案 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>