2012-02-29 3 views
0

小数点または整数の値を含む連想配列を使用できないということは、セッションに靴のサイズを格納できないことを意味します。例えばCake Session Componentメソッドで連想配列を使用する一貫した方法はありますか?

$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; 

を使用する必要があります。以下は動作しません。すべてのセッションコンポーネントメソッドで連想配列を使用する一般的な方法はありますか?

答えて

1

実際には、最初のパラメータの文字列と2番目のパラメータの値が必要です。

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

をまた読んで:しかし、あなたの文字列は、例えば、CakePHPのの配列を表すことができ

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

     ) 

) 

が、それについてのあなたの質問です:これは、この配列を表す

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

+0

回答する前に質問をお読みください。私が掲示した例では、結果の文字列は次のようになります:$ this-> Session-> write-> 'order_array.items.Shoe_1.38.5.quantity'、$ qu); '38 .5 'がちょうどドットで分割されていることに注目してください。 – joyster

+0

私はあなたの実装が間違っていると説明しました。 [book](http://book.cakephp.org/2.0/ja/core-libraries/components/sessions.html?highlight=write)を確認してください。 CakePHPだけでなくPHPが配列のインデックスに10進数を許可していないので、マニュアルもチェックしてください。 –

+0

ありがとうございます。私は私の質問への答えは 'いいえ、CakePHPセッションコンポーネントメソッドで連想配列を使用する一貫した方法はありません' – joyster

1

データの保存方法を変更する必要があると思います。

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

事実上問題を解決します。

0

回答は小数点以下の数値を整数に(10を掛けて)変換することでした。これらは保存することができます:

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

あなたの返信には多くの感謝!

関連する問題