PHP数组到Javascript对象在console.log之后没有数组

时间:2017-04-07 17:21:27

标签: javascript php arrays json

现在有很多人有同样的问题,他们的决议没有奏效。

问题

我有一个从REST呼叫回来的时间列表。它们完全按照自己的意愿创建,除了我希望它们存储到JavaScript数组中。

PHP

    function getOpenAppts() 
{
    global $wpdb;
    $final_array = "";
    $td = date('m/d/Y');
    $datetime = new DateTime('tomorrow');
    $tm = $datetime->format('Y-m-d');
    $startDate = $td;
    $endDate = $tm;
    $apptTypeID = "23";
    $get_loc = $wpdb->get_results('SELECT provid,id FROM location');
    foreach($get_loc as $val){
    // call to Athena to get open appointments
        $res = getOpenAppointments($val->id, $val->provid, $startDate, $endDate, $apptTypeID);
        //print_r($res);

        // if we got some appointments back strip any that started before now
        if (array_key_exists('totalcount', $res) && $res['appointments'] > 0)
        {
            $tzStr = "America/Los_Angeles";
            $tzObject = new DateTimeZone($tzStr);
            $nowDT = new DateTime();
            $nowDT->setTimezone($tzObject);
            //print_r($nowDT);
            //print_r("\n");
            $appts = array();
            for ($i = 0; $i < count($res['appointments']); $i++)
            {
                $apptDT = new DateTime($res['appointments'][$i]['date']." ".$res['appointments'][$i]['starttime'], $tzObject);
                //print_r($apptDT);
                //print_r("\n");
                if ($nowDT < $apptDT)
                    $appts[] = $res['appointments'][$i];
            }
        }

        if (count($appts) > 0)
            foreach($appts as $data) {
                $final_array[] = $data;
        }

        else
            $res; // something went wrong. return error message
    }
    echo json_encode($final_array);
}

的header.php

<script>
    var times = <?php getOpenAppts(); ?>;
    console.log(times); //Will display properly
</script>

enter image description here 这正是它应该回来的方式!

但..当我在变量时运行一个控制台(它在标题中使它成为一个全局变量。我明白了。 enter image description here

它应该给我一个console.log给我的完全相同的列表。

我尝试了什么

我跑了:

PARSE.json(times);

没效果......

我用PHP做过:

json_encode(json_decode($appts),true);

没效果......

此过程的哪一部分不正确?

1 个答案:

答案 0 :(得分:1)

您正在使用time作为全局变量。

由于声明后面的console.log打印出一切正常,你可能会在某个地方覆盖它的值。

尽量避免使用全局变量,它们是邪恶的:)