将PHP数组传递给JavaScript函数

我想获得一个PHP数组variables到一个JavaScriptvariables。

这是我的代码:

<html> <head> <script type="text/javascript"> function drawChart(row,day,week,month,date) { // Some code... } </script> </head> <body> <?php for($counter = 0; $counter<count($au); $counter++) { switch($au[$counter]->id) { case pageID.'/insights/page_active_users/day': $day[] = $au[$counter]->value; break; case pageID.'/insights/page_active_users/week': $week[] = $au[$counter]->value; break; case pageID.'/insights/page_active_users/month': $month[] = $au[$counter]->value; break; } } ?> <script> drawChart(600/50, '<?php echo $day; ?>', '<?php echo $week; ?>', '<?php echo $month; ?>', '<?php echo createDatesArray(cal_days_in_month(CAL_GREGORIAN, date('m',strtotime('-1 day')), date('Y',strtotime('-1 day')))); ?>'); </script> </body> </html> 

我无法获得PHP数组的价值。

我该如何解决这个问题?

使用JSON 。

在下面的例子中$php_variable可以是任何PHPvariables。

 <script type="text/javascript"> var obj = <?php echo json_encode($php_variable); ?>; </script> 

在你的代码中,你可以像下面这样使用:

 drawChart(600/50, <?php echo json_encode($day); ?>, ...) 

在需要从JSONstring中parsing对象的情况下(比如在AJAX请求中),安全的方法是使用JSON.parse(..) ,如下所示:

 var s = "<JSON-String>"; var obj = JSON.parse(s); 

你可以使用php的json_encode()*函数将php数组转换成javascript

 <?php $phpArray = array( 0 => "Mon", 1 => "Tue", 2 => "Wed", 3 => "Thu", 4 => "Fri", 5 => "Sat", 6 => "Sun", ) ?> <script type="text/javascript"> var jArray= <?php echo json_encode($phpArray ); ?>; for(var i=0;i<6;i++){ alert(jArray[i]); } </script> 

两个平台之间的数据传输需要通用的数据格式。 JSON是发送跨平台数据的通用全局格式。

 drawChart(600/50, JSON.parse('<?php echo json_encode($day); ?>'), JSON.parse('<?php echo json_encode($week); ?>'), JSON.parse('<?php echo json_encode($month); ?>'), JSON.parse('<?php echo json_encode(createDatesArray(cal_days_in_month(CAL_GREGORIAN, date('m',strtotime('-1 day')), date('Y',strtotime('-1 day'))))); ?>')) 

这是你的问题的答案。 答案可能看起来非常复杂。 你可以看到一个简单的例子来描述服务器端和客户端之间的通信

 $employee = array( "employee_id" => 10011, "Name" => "Nathan", "Skills" => array( "analyzing", "documentation" => array( "desktop", "mobile" ) ) ); 

需要转换为JSON格式才能将数据发送回客户端应用程序,即JavaScript。 PHP有一个内置函数json_encode(),它可以将任何数据转换为JSON格式。 json_encode函数的输出将是一个像这样的string。

 { "employee_id": 10011, "Name": "Nathan", "Skills": { "0": "analyzing", "documentation": [ "desktop", "mobile" ] } } 

在客户端,成功函数将获得JSONstring。 JavaScript也有JSONparsing函数JSON.parse()可以将string转换回JSON对象。

 $.ajax({ type: 'POST', headers: { "cache-control": "no-cache" }, url: "employee.php", async: false, cache: false, data: { employee_id: 10011 }, success: function (jsonString) { var employeeData = JSON.parse(jsonString); // employeeData variable contains employee array. }); 

在下面的例子中,你有一个PHP数组,然后首先通过一个PHP数组创build一个JavaScript数组:

 <script type="javascript"> day = new Array(<?php echo implode(',', $day); ?>); week = new Array(<?php echo implode(',',$week); ?>); month = new Array(<?php echo implode(',',$month); ?>); <!-- Then pass it to the JavaScript function: --> drawChart(<?php echo count($day); ?>, day, week, month); </script>