【问题标题】:CodeIgniter-Access from model to controllerCodeIgniter-从模型到控制器的访问
【发布时间】:2016-11-07 15:22:07
【问题描述】:

我在模型中有以下代码:

<?php
class Route_Model extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }

    public function getRoute($date = array())
    {
        try {
            $data = array(
                'route' => array(
                    'id' => 1,
                    'name' => 'budapest-athens',
                    'price' => 150,
                    'id' => 2,
                    'name' => 'rome-madrid',
                    'pret' => 250,
                    'id' => 3,
                    'name' => 'belgrade-bucharest',
                    'price' => 180,
                    'id' => 4
                )
            );
            return $data;

        } catch (Exception $e) {
            return $e->getMessage();
        }
    }

}?>

我想访问我的控制器中的数组元素。

如何分别访问每个字段?

类似$price = $this-&gt;data['price']?

谢谢!

【问题讨论】:

    标签: php arrays codeigniter


    【解决方案1】:

    您正在返回一个具有两个级别的数组,如果您想从数组 $data 中获取 price,只需在您的控制器中执行此操作:

    $data = $this->route_model->getRoute($date);
    $price = $data['route']['price']; 
    

    请注意,您的数组格式不正确,因为您有重复的键,这可能会导致问题

    【讨论】:

    • 未定义变量'日期'...:/
    • $date 是您在route_model 上定义的变量...只有您知道它应该包含什么
    • 很高兴有帮助!如果可行,请批准答案;)
    【解决方案2】:

    这个数组永远不会工作,因为你覆盖了键,我想你会想要下面的数组:

    $data = [
            'route' => [
                [
                    'id' => 1,
                    'name' => 'budapest-athens',
                    'price' => 150
                ], [
                    'id' => 2,
                    'name' => 'rome-madrid',
                    'price' => 250
                ], [
                    'id' => 3,
                    'name' => 'belgrade-bucharest',
                    'price' => 180
                ]
            ]
        ];
    

    除此之外,您的 try / catch 在这里似乎没有必要,没有真正的尝试。这是一个硬编码的数组,所以除非它确实会进行一些交互,否则不需要 try / catch。

    无论如何,要在您的控制器中接收此数据,您应该这样做:

    $this->load->model('Route_model');
    $route = $this->Route_model->getRoute();
    
    var_dump($route);
    exit;
    

    现在您将拥有这个数组。另一个奇迹,您实际上是在尝试获取此数组中的所有路由,还是您想对 $date 参数做些什么?因为现在它看起来不像被使用,除非你剥离一些代码。

    【讨论】:

      猜你喜欢
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多