简体   繁体   中英

generating javascript array from php

I'm loosing hairs on this.

I have an PHP array:

Array
(
    [10-10-2015] => Array
        (
            [0] => Array
                (
                    [hour] => 10:00
                    [title] => Meeting x
                )

        )

    [10-09-2015] => Array
        (
            [0] => Array
                (
                    [hour] => 17:00
                    [title] => another meeting
                )

            [1] => Array
                (
                    [hour] => 11:11
                    [title] => other meeting
                )

        )

)

As you can see, there are two meetings in the same day. That's correct.

I need to generate Javascript array:

var codropsEvents = {
    '10-16-2015': ['<span>event one</span>', '<span>event two</span>'],
    '10-17-2015': ['<span>event one</span>', '<span>event two</span>'],
};

Any help or suggestions how to do it ?

You can use json_encode($array) in php to convert it to valid json string. In your javascript you can use JSON.parse(json) for parsing json string.

For example :

<?php
$array=array
(
    '10-10-2015' => array
        (
            0 => array
                (
                    'hour' => '10:00',
                    'title' => 'Meeting x'
                )

        )
);
?>

<script>

var data = JSON.parse('<?php echo json_encode($array); ?>');
// or var data = <?php echo json_encode($array); ?>; 
</script>

使用json。

echo 'var myJsArray = JSON.parse("'.json_encode($myPhpArray).'");';

Try this approach:

create array that You want:

<?php

  $events = .....;

  $data = [];
  foreach($events AS $date => $eventsByDate) {
      $data[$date] = [];
      foreach($eventsByDate AS $event) {
          $data[$date][] = '<span>'.$event['title'].'</span>';
      }
  }

?>

output $data array encoded as json string and parse it to get javascript object or array:

<script>
var codropsEvents = JSON.parse('<?=json_encode($data)?>');
console.log(codropsEvents);
</script>

New progress...

Without JSON.parse, only just:

var codropsEvents = <?=json_encode($events);?>

it's returning

var codropsEvents = {
    "10-10-2015":[
                     {"time":"10:00","title":"Meeting X"}
                 ],
    "10-09-2015":[
                     {"time":"17:00","title":"Other event"},
                     {"time":"11:11","title":"Other Meeting"}
                 ]
 }

which causes returning Object

Any ideas ?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM