fang 2016-01-15 16:54:41 4836次浏览 4条回复 0 0 0
public function actionIndex() 
{ 
    $dataProvider=Export::model()->findAllBySql("select id,BaiduLat,BaiduLon from tablename where id < 3");

    $this->render('index',array(
        'dataProvider'=>$dataProvider,
    ));
}

这是控制器中的方法,现在想在 index.php 把 $dataProvider 的数据给读取出来,放在数组里。 print_r($dataProvider); 输出得到以下,那么如何把 BaiduLat 和 BaiduLon 的信息给取出来,放在一个数组中,便于后续地图标注使用。谢谢

Array ( [0] => Export Object ( [_new:CActiveRecord:private] => [_attributes:CActiveRecord:private] => Array ( [id] => 1 [BaiduLat] => 31.262788 [BaiduLon] => 121.630306 ) [_related:CActiveRecord:private] => Array ( ) [_c:CActiveRecord:private] => [_pk:CActiveRecord:private] => 1 [_alias:CActiveRecord:private] => t [_errors:CModel:private] => Array ( ) [_validators:CModel:private] => [_scenario:CModel:private] => update [_e:CComponent:private] => [_m:CComponent:private] => ) [1] => Export Object ( [_new:CActiveRecord:private] => [_attributes:CActiveRecord:private] => Array ( [id] => 2 [BaiduLat] => 31.263184 [BaiduLon] => 121.630395 ) [_related:CActiveRecord:private] => Array ( ) [_c:CActiveRecord:private] => [_pk:CActiveRecord:private] => 2 [_alias:CActiveRecord:private] => t [_errors:CModel:private] => Array ( ) [_validators:CModel:private] => [_scenario:CModel:private] => update [_e:CComponent:private] => [_m:CComponent:private] => ) )
  • 回复于 2016-01-18 09:54 举报

    自己写个函数处理下这两个数组

  • 回复于 2016-01-19 08:24 举报
    $datas = ArrayHelper::map($dataProvider, 'id', function ($dataProvider) {
        return [
            'BaiduLat' => $dataProvider->BaiduLat,
            'BaiduLon' => $dataProvider->BaiduLon,
        ];
    }, 'id');
    

    打印出的结果如下

    [
      '1'=>[
           'BaiduLat' => 31.262788,
           'BaiduLon' => 121.630306,
           ],
      '2'=>[
           'BaiduLat' => ...,
           'BaiduLon' => ...,
           ],
    ]
    

    这样是不是方便使用了。
    手打的代码,如果有误,可以联系我。

    觉得很赞
  • 回复于 2016-01-19 08:26 举报

    补充下回复 $dataProvider 如果是数组就用 $dataProvider[''] 的形式,如果是对象就用 $dataProvider-> 的形式

  • 回复于 2016-01-21 11:30 举报

    效果早已出来,忘记结题了,分享下。

    $dataList =array();
    foreach ($dataProvider as $key => $value)
    {
        $data['BaiduLat']=$value->BaiduLat;
        $data['BaiduLon']=$value->BaiduLon;
        $dataList[$key]=$data;
    }
    echo json_encode($dataList);
    

    最后的语句是传数据给前台,对应我的另一个帖子 ajax 传数据。希望对大家有帮助。

    , , 觉得很赞
您需要登录后才可以回复。登录 | 立即注册