是否有一致的方法在Cake Session Component方法中使用关联数组?

时间:2012-02-29 15:24:35

标签: cakephp

我问,因为无法使用包含十进制或整数值的关联数组意味着我无法在会话中存储鞋码。例如以下不起作用:

$shoe_id = 'Shoe_1';
$size = '38.5';
$qu = 1;

$this->Session->write(array('order_array','items',$shoe_id,$size,'quantity'), $qu);

我必须使用

$_SESSION['order_array']['items'][$shoe_id][$size]['quantity'] = $qu;  

代替。是否有在所有会话组件方法中使用关联数组的常用方法?

3 个答案:

答案 0 :(得分:1)

实际上,第一个参数需要一个字符串,第二个参数需要值。但是你的字符串可以代表一个CakePHP数组,例如:

$this->Session->write('Country.state.city', 'Anyone');

并阅读:

echo $this->Session->read('Country.state.city');

这代表这个数组:

Array
(
    [Country] => Array
        (
            [state] => Array
                (
                    [city] => Anyone
                )

        )

)

你的问题是什么?

答案 1 :(得分:1)

我认为你应该改变存储数据的方式。

Array(
  [order_array] => Array(
    [items] => Array(
      0 => Array(
        name => Shoe_1,
        size => 38.5,
        quantity => 1,
      )
    )
  )
)

它会事实上解决你的问题。

答案 2 :(得分:0)

答案是将十进制大小转换为整数(乘以10)。然后可以存储这些:

$this->Session->write('order_array.items.'.$shoe_id.'.'.$size.'.quantity', 1);

非常感谢您的回复!