【问题标题】:pass array from controller to view in codeigniter从控制器传递数组以在 codeigniter 中查看
【发布时间】:2012-09-02 07:12:55
【问题描述】:

型号:

从 mySQL 中获取值为:array['10','5','2'] 的数据并将其放入会话数据中

控制器:

将该会话数据放入一个数组中以传递给视图:

$fubar = array(
'ex1' => $this->session->userdata('ex1')
    );
$this->load->view('view', $fubar);

查看:

echo $ex1;

视图会吐出数组:array['10','5','2'] 如何解析该数组以获取单个值(10、5 或 2)? 例如,echo $ex1['1']; 会吐出前 1 个字符:ar 但我希望它返回值 5

我想我可能没有在 mySQL 中正确存储数组,但我不确定。

【问题讨论】:

  • 请把var_dump($fubar); 放在$this->load->view('view', $fubar); 之前它会显示什么?
  • var_dump: array(4) { ["ex1"]=> string(21) "array['40','20','10']" ["ex2"]=> 字符串(21)“数组['80','40','20']”[“ex3”]=>布尔(假)[“日期”]=>字符串(10)“2012-09-08”}
  • 所以,数组根本不是数组,它们只是字符串。如何解析这些字符串并将它们保存为数组?
  • eval(<php code here>)。但这并不安全。将数组保存为字符串很奇怪。最好使用 serialize($your_array) 和 unserialize($your_serialized_array) 函数或 json_encode() 和 json_decode() 函数。总结: 1. 保存在会话中:serialize($your_array); 2. 从会话中提取: unserialize($this->session->userdata('ex1'))
  • 为什么你的数组被返回为字符串?发布您的模型,或任何正在执行此任务的人。

标签: php mysql arrays codeigniter


【解决方案1】:
$fubar['ex1'] = $this->session->userdata('ex1');
$this->load->view('view', $fubar);

现在试试

    $ex1[0];
    $ex1[1];

【讨论】:

  • 这和$fubar = array('ex1' => $this->session->userdata('ex1') );一模一样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 2017-07-27
  • 2016-07-06
相关资源
最近更新 更多