在Javascript循环中显示PHP变量

4

我目前正在开发一款股票市场模拟器,我试图显示每个虚拟公司的第一个生成价格。为此,我已经在PHP中生成了我的价格,并将它们添加到数组'$firstValue'中。我还为我的HTML元素生成了ID,这些值将显示在'$priceIdentifiers'中。以下是用于生成这些值的代码:

PHP:

$priceIdentifiers = array("Prices1", "Prices2", "Prices3");
$normalDistChangers = array("-1000", "1000");
$highValues = array("2500", "4850", "1780");
$lowValues = array("2200", "4300", "1400");
$firstValue = array();

for ($x = 0, $length = 3; $x < $length; $x++)
{
  $tempValue = (rand($lowValues[$x], $highValues[$x]) / 100);
  $tempMean = log(($tempValue) / (rand($lowValues[$x], $highValues[$x]) / 100));
  $tempAnnStdDev = sqrt(365 * ($tempMean * $tempMean));
  $tempNormalDist = (rand($normalDistChangers[0], $normalDistChangers[1]) / 1000);
  $tempPrice = number_format(($tempValue * (1 + ($tempMean * (1/100000)) + $tempAnnStdDev * sqrt(1 / 100000) * $tempNormalDist)), 2, '.', '');

  array_push($firstValue, $tempPrice);
}

以下是HTML元素的代码,价格将在其中显示。由于我目前正在与3家公司合作,因此会生成3行。
HTML和PHP:
<td style = "text-align:center;font-size:15pt" id = "<?php echo $priceIdentifiers[$a]; ?>"></td>

当$a变量的值等于0并递增直到其值等于2时。

生成数值已经成功了,我在控制台日志中看到,在显示列表内容时,不同公司的3个价格都在列表中,但是当尝试使用以下Javascript代码显示它们时,结果却显示整个数组而不是单个元素:

Javascript:

var tempPriceOne = <?php echo json_encode($firstValue); ?>;

var a = 0;
var highPrice = tempPriceOne;

var inv = setInterval(function() {
    if (a < 50)
      {
        document.getElementById("Prices1").innerHTML = tempPriceOne;

目前,在查看网站:http://leonid.chashchin.net/stockMarket.php 时,它将整个数组显示在第一行'Price'中。我需要修改什么才能使第一个元素显示在第一行,第二个元素显示在第二行,以此类推?


tempPriceOne是一个字符串数组。从视图源代码可以看到: var tempPriceOne = ["24.24","47.25","15.21"]; - Nawed Khan
欢迎。$firstValue 是一个数组。您期望该单元格的值是什么? - Jeto
@Nawed Khan 是的,没错。我目前在苦恼的是如何将该列表中的每个元素单独显示,随着行数下降和 priceIdentifiers 中的元素递增。 - Leo Chashchin
@Jeto 我已经研究了关于将PHP数组元素实现到Javascript中的其他帖子,并尝试使用json_encode方法。我原本希望它能够单独显示列表中的每个元素,但是这种方法并没有起作用。 - Leo Chashchin
@LeoChashchin,你所做的确实将数组放入了JS变量中,这是正确的方法。你的问题在于你没有在JS端循环遍历数组,而是将其“原样”输出到一个期望单个(字符串)值的单元格中。 - Jeto
@Jeto 我现在明白了,谢谢你。当我决定显示它时,我对 json_encode 的作用感到困惑,不太确定。幸运的是,我现在已经找到了解决问题的方法。感谢你的帮助。 - Leo Chashchin
1个回答

1
你正在打印/分配整个数组,而不是单个元素。
这是如何打印单个元素的方法:
document.getElementById("Prices1").innerHTML = tempPriceOne[0];
document.getElementById("Prices2").innerHTML = tempPriceOne[1];
document.getElementById("Prices3").innerHTML = tempPriceOne[2];

1
这基本上为我完成了工作。非常惊讶我没有看到这作为一个解决方案,只是困惑于能否准确理解json_encode的作用。非常感谢您的回复。 - Leo Chashchin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接