不可否认,我对数组的理解最好是初级的(虽然在此之前我认为我已经弄清楚了)。
基本上,我正在尝试将PHP数组转换为JS数组。这样做的目的是最终我想使用jquery创建一个图形/图表(我已经尝试过使用php图表,但是到目前为止我们还没有为我工作)。
长话短说,每次我尝试将我的PHP数组转换为JS数组时,输出都是“null”。这可能是由于我对数组的理解......
//this query gets me the count of each type of variabletype
$sql = "SELECT variabletype, COUNT(variabletype) AS value_occurrence FROM variable GROUP BY variabletype ORDER BY value_occurrence DESC";
$vars_query = mysqli_query($con,$sql) or die(mysqli_error($con));
while($vars = mysqli_fetch_array($vars_query, MYSQLI_ASSOC))
{
//this is a sub-query that gets me how many of those records are considered "positive"
$times_positive_qry = mysqli_query($con, "SELECT variable.variabletype, COUNT(value.valueid) AS positive_occurrence FROM variable INNER JOIN value On variable.variableid=value.variableid WHERE variable.variabletype = '" .$vars['variabletype']. "' AND value.valuelift>0.00 AND value.valuesignificant=1 GROUP BY variable.variabletype ORDER BY positive_occurrence DESC");
$times_positive = mysqli_fetch_array($times_positive_qry, MYSQLI_ASSOC);
$pos = $times_positive['positive_occurrence'];
}
//this is the code that is supposed to take my php array and turn it into JS array.
echo "<script type='text/javascript'>";
$php_array = $pos;
$js_array = json_encode($php_array);
echo "var javascript_array = ". $js_array . ";\n";
echo "</script>";
同样,我对数组的理解是初级的,但我认为这可能与我使用$ pos有关。这不是阵列吗?或者我在其他地方错过了标记?
非常感谢任何帮助!
答案 0 :(得分:3)
您可以将$ pos显式声明为如下数组:
$pos = array();
在while循环中,您可以确保它是一个数组,并且在使用如下括号迭代循环时不会丢失数据:
$pos[] = $times_positive['positive_occurrence'];
该语法自动创建索引数组。如果你不使用那个语法,那么$ pos的值将只是在while语句的最后一个循环中赋值的值。
答案 1 :(得分:1)
你有这一行:
$pos = $times_positive['positive_occurrence'];
它为变量$pos
赋值。您分配的值可能不是数组,但此外,每次在循环中都会覆盖$ pos。
所以我认为你打算这样做:
$pos[] = $times_positive['positive_occurrence'];
这会将$pos
视为一个数组,并将每个新值附加到数组的末尾。
您可能希望通过编写$pos = array();
来启动脚本。这样,你确保$ pos已经存在并且是一个有效的(空)数组,以防查询没有返回任何结果。
答案 2 :(得分:0)
这可能是您想要的解决方案。
,你的javascript看起来像这样:
<script type='text/javascript'>
<?php
//this is just and example you can replace it with $pos[]
$php_array = array('abc','def','ghi');
?>
var js_array =<?php echo json_encode($php_array);?>;//do not add quotes to this line
alert(js_array[0]);
</script>