PHP array passed to JavaScript function
Manipulating PHP arrays in JavaScript is a common requirement. This guide outlines an efficient way to pass PHP arrays to JavaScript functions using JSON.
Problem:
I'm trying to pass an array from PHP to a function in JavaScript, but I'm running into a problem. The code sample is as follows:
<?php $au = []; for ($counter = 0; $counter < count($au); $counter++) { switch ($au[$counter]->id) { case pageID.'/insights/page_active_users/day': $day[] = $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>
Workaround:
Use JSON to encode the PHP array to a string and pass it to a JavaScript function. The encoding format is as follows:
echo json_encode($day);
In JavaScript, use the JSON.parse() method to parse the received JSON string:
var obj = JSON.parse('<?php echo json_encode($day); ?>');
The modified code is as follows:
<?php $au = []; for ($counter = 0; $counter < count($au); $counter++) { switch ($au[$counter]->id) { (...) } } ?> <script> drawChart(600/50, <?php echo json_encode($day); ?>, <?php echo json_encode($week); ?>, <?php echo json_encode($month); ?>, <?php echo createDatesArray(cal_days_in_month(CAL_GREGORIAN, date('m',strtotime('-1 day')), date('Y',strtotime('-1 day')))); ?>); </script>
This approach ensures that PHP array values are passed to JavaScript functions in a safe and reliable manner.
The above is the detailed content of How do I effectively pass a PHP array to a JavaScript function for manipulation?. For more information, please follow other related articles on the PHP Chinese website!