PHP - 将数组设置为对象

时间:2016-12-31 11:57:23

标签: php jquery arrays json codeigniter

我真的不知道如何在对象中转换数组。

我需要的是我的数组可以变换为像这个对象:

    var locations= [
        {lat: -22.9, lng: -43.23},
        {lat: 23.03, lng: 113.12},
        {lat: 23.12, lng: 113.25},
        {lat: -7.24917, lng: 112.75083},
        {lat: -6.323116, lng: 106.870941},
        {lat: 40.69, lng: -73.99},
        {lat: 40.74, lng: -73.94}
    ];

我用ajax检索数据:

$(function() {
        $.ajax({
            url         : '<?= base_url('admin/getCustomerLatLong'); ?>',
            method      : 'GET',
            // dataType : 'JSON',
            success     : function(data) {
                console.log(data);
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert('Error while getting the data. Call the developer!');
            }
        });
    });

我正在使用codeigniter,这是我的控制器中的getCustomerLatLong函数:

public function getCustomerLatLong() {
    $data = $this->M_customer->getAllCustomers()->result();
    $locations = array();

    foreach ($data as $location) :
        $locations['lat'] = $location->latKota;
        $locations['lng'] = $location->lngKota;
        echo json_encode($locations);
    endforeach;
}

请提前感谢任何答案对我有所帮助。

1 个答案:

答案 0 :(得分:3)

我想你的问题可归结为你在循环中使用echo

尝试将控制器更改为:

public function getCustomerLatLong()
{
    $data = $this->M_customer->getAllCustomers()->result();
    $locations = [];

    foreach ($data as $location) {

        $locations[] = [
            'lat' => $location->latKota,
            'lng' => $location->lngKota,
        ];
    }

    echo json_encode($locations);

}

您可能还需要取消注释dataType : 'JSON',

希望这有帮助!