PHP循环,包括一些javaScript

PHP循环,包括一些javaScript,javascript,php,for-loop,highcharts,Javascript,Php,For Loop,Highcharts,我有一个javascript函数,我从highcharts示例中获取,如下所示: $(function () { (...) series: [{ name: 'Things', colorByPoint: true, data: [{ name: 'Alabama', y: 1010, drilldown: 'Alabama counties'

我有一个javascript函数,我从highcharts示例中获取,如下所示:

$(function () {    


(...)

series: [{
        name: 'Things',
        colorByPoint: true,
        data: [{
            name: 'Alabama',
            y: 1010,
            drilldown: 'Alabama counties'
        }, {
            name: 'Alaska',
            y: 77,
            drilldown: 'Alaska counties'
        }, {
            name: 'Arizona',
            y: 947,
            drilldown: 'Arizona counties'
        }]
这只接受阿拉巴马州、阿拉斯加州和亚利桑那州,我正试图制定一个每个州都有死亡人数的阴谋

我已经成功地将我的postgres数据库连接到一个php脚本,我有两个数组:

$state_name  and $fatalities
我想做一些lop for或foreach,可以获取州名称和死亡人数,自动生成更多的州,在系列中。。。否则我就得一个一个的做

我已经尝试了很多不同的方法,但是我的代码很混乱,我可以分辨出php在哪里结束,javaScript在哪里开始。。。你能给我一些帮助吗

所以,我试着只生成name和y,现在这就是我的想法

<?php


// Connection parameters
$host = "localhost"; 
$user = "postgres"; 
$pass = "iniciativa2"; 
$db = "crash15042014";


// Connecting...
$con = pg_connect("host=$host dbname=$db user=$user password=$pass")
or die ("Could not connect to server\n");


$query = "select state_id, state_name, sum(noofcrashes) as total
from locationdim locdim, eventfacts ev
where locdim.location_id = ev.location_id
group by locdim.state_id, locdim.state_name
order by locdim.state_id;
";

$rs = pg_query($con, $query) or die("Cannot execute query: $query\n");


$state_name = array();
$deaths = array();



while ($row = pg_fetch_assoc($rs)) {
array_push($state_name, $row['state_name']);
array_push($deaths, $row['total']);
}

print_r($state_name);
echo "<br>";
print_r($deaths);

//This is fine      


pg_close($con); 


// From here, I have no clue...
for ($i = 0; $i <= 56; $i++) { ?>

            name: <?php "'". echo $state_name[$i] . "'"; ?>,
            y: <?php echo $deaths[$i]; ?>,
            drilldown: <?php "'". echo $state_name[$i] . "counties'"; ?>

<?php } ?>

我建议用PHP为javascript创建整个数据数组。例如

$death_data = array();
while ($row = pg_fetch_assoc($rs)) {
   $death_data[] = array(
      'name' => $row['state_name'],
      'y' => $row['total'],
      'drilldown' => $row['state_name'] + ' counties', //Work out what you want here
   );
}
然后通过JSON格式将其传递给javascript,并创建一个javascript数组,您可以将其用于您的系列。示例该问题没有标记为jQuery,但您在示例中似乎正在使用jQuery,因此我使用了它。如果您不使用jQuery,则必须找到$.parseJSON的替代品,但其余的则适用:

$function{

(...)

var death_data = $.parseJSON('<?php echo json_encode($death_data); ?>');

series: [{
    name: 'Things',
    colorByPoint: true
    data: death_data

你试过使用json_encode/json_decode吗?你能分享代码吗?即使它的信息我已经编辑好让你看…我也试过在foreach循环中创建一个数组,使用$array=array'name:'=>$state_name[$I],'y:'=>$death[$I]然后是json_encode$array,但我不确定我在做什么……这对我来说是新的……即使代码很凌乱,也要共享代码。否则,只要考虑使用json_encode和json_decode函数,它们会让你的生活更轻松。你可以有一个数组,并在查询循环中添加值,如:$state_name=$row['state_name']$result\u数组[$state\u name]['state']=$state\u name;$result\u数组[$state\u name]['death'][=$row['death'];那么至少您有一个state=>death total对的数组。见鬼的是$.parseJSON;Just do var death_data=php以JSON格式回显一个字符串。$.parseJSON将它视为静态字符串,因为php在那里编写了该字符串,并对其进行解析,以javascript重新创建一个数组/对象。$.parseJSON是一个jQuery函数b但是vanilla js中也有一些选项。我不是新手。你正在序列化并立即取消序列化。只需直接回显JSON。JSON中的js表示Javascript。你可以直接回显到Javascript中。是的,你可以。但在我看来,将其设为字符串并对其进行备份分析更安全。直接回显JSON相当于使用JSIN在我看来,g eval而不是JSON。但是,是的,这两种方法都有效。这是一个边缘问题——通过parseJSON是我的习惯。答案的核心是相同的,无论你是回应它还是使用parseJSON