1

我在尝试迭代 Javascript 数组中的 PHP 数组时遇到了一些麻烦...我在论坛上进行了搜索,虽然我发现了一些关于将 PHP 值复制到 Javascript 值的帖子,但我无法找到确切的内容我正在努力实现...

我有一个名为“phpArray”的 PHP 数组数组,我希望将该数组的每个值复制到一个 Javascript 数组数组中(称为“javaArray”)。我有一个 Javascript 循环,当“phpArray”为空时填充 Javascript 数组,我只是尝试使用 PHP 索引来迭代“phpArray”。但是,它的作用就好像 PHP 索引从不增加一样,而我唯一能得到的数组值是“phpArray”的第一个……下面是与此相对应的一段代码:

for (var i = 0; i < javaArray.length; i++) {
    javaArray[i] = new Array(<?php echo $numCols; ?>);

    for (var j = 0; j < javaArray[i].length; j++) {
        javaArray[i][j] = "0";

        <?php 
        if(sizeof($javaArray) > 0)
        {
            ?>
            javaArray[i][j] = "<?php echo $phpArray[$i][$j]; ?>";
            <?php
        }
        ?>
    }
}

关于我该怎么做的任何想法?

提前感谢您的时间和精力!:)

4

4 回答 4

6

你应该使用json_encode

javaArray = <?php echo json_encode($phpArray) ?>;
于 2013-05-27T11:33:22.650 回答
0

根据评论(为什么不使用JSON编码?)JS和PHP之间的联系只是单向的,所以你需要在PHP中创建完整的JS代码。

我建议做类似的事情(为了清楚起见,一维数组):

// this is PHP code
echo "var JavaArray = array("; // this echoes declaration of JavaScript array
foreach($phpArray as $item){ // this starts iterating PHP array
  echo $item.', '; // this "copies" PHP array item to JavaScript array item
}
echo ')'; // close JS declaration of array

这实际上并不完美,因为它,在结尾处留下,但你明白了。所有 JS 代码都需要通过 PHP 输出。

于 2013-05-27T11:37:42.410 回答
0

正如评论中所建议的,这仅在从.php页面生成 javascript 时才有效。如果它是一个.js脚本,它不会工作。

最简单的方法是

var javaArray = <?php echo json_encode($phpArray) ?>;

正如其他人所建议的那样。

你的代码不起作用的原因是你有一个 javascript 循环,而不是一个 PHP 循环。在 PHP 中,您可以这样做:

var javaArray = [];
<?php
  for ($i=0; $i < count($phpArray); $i++) {
     for ($j=0; $j < count($phpArray[$i]); $j++) {
         echo "javaArray[$i][$j] = " . $javaArray[$i][$j] . ";";
     }
  }
?>
于 2013-05-27T11:38:56.443 回答
0

我没有做大量的 PHP,但我怀疑大多数人会使用 JSON 函数或库来创建分配给 Javascript 变量的文本 - 你应该研究一下。

在您的情况下,我可以看到您正在尝试做什么,但是当您使用时,您绝对必须将 PHP/服务器端视为为 javascript 端编写脚本。您不能混合使用这两种语言,因为没有办法让 PHP 的 $i 和 $j 与 javascripts i 和 j 不一致。

澄清一下,JavaScript 的 i 和 j 在 $phpArray 和 $i 和 $j 已经超出服务器范围之后很久才进入客户端计算机的范围 - “永远不会相遇”等。

看起来您要编写的是数组分配和初始化逻辑。对于短循环,这样做没有真正的问题。你用 PHP 编写一个循环,然后用 Javascript 写出代码。javascript 端不会有循环 - 只是一组“展开”的值。

例如,如果 i 和 j 从 0 到 2,数字为 0 到 8,您将编写 PHP 代码以输出以下内容:

javaArray = new Array(2);
javaArray[0] = new Array(2);
javaArray[0][0] = 0;
javaArray[0][1] = 1;
javaArray[0][2] = 2;
javaArray[1] = new Array(2);
javaArray[1][0] = 3;
javaArray[1][1] = 4;
javaArray[1][2] = 5;
javaArray[2] = new Array(2);
javaArray[2][0] = 6;
javaArray[2][1] = 7;
javaArray[2][2] = 8;

再次注意,在初始化期间,javascript 没有循环——那些在 PHP 端。但是,一旦您将数据记录下来,您就可以在浏览器中使用 javascript(但不是 PHP)对其进行循环或索引。

希望这会有所帮助。

马克 ia.uk.com

于 2013-05-27T11:43:33.627 回答