0

Cookie は文字列しか保持できないといつも思っていましたが、PHP が Cookie を処理する方法では、配列を Cookie に格納することもできます (シリアル化された配列ではなく、ネイティブ配列について話しているのです)。あなたがする必要があるのはこれだけです:

setcookie('a[1]', 'a');
setcookie('a[2]', 'b');
var_dump($_COOKIE);

上記は以下を生成します (2 回実行することを忘れないでください)。

array(1) {
  ["a"]=>
  array(2) {
    [1]=>
    string(1) "a"
    [2]=>
    string(1) "b"
  }
}

何が起きてる?明らかに、文字列のみを保持することになっている Cookie に配列を格納することができました。これはバグですか?

4

2 に答える 2

2

これは確かにバグではありません。実際のところ、PHPドキュメントに記載されています

Cookie 名に配列表記を使用して、配列 Cookie を設定することもできます。これには、配列要素と同じ数の Cookie を設定する効果がありますが、スクリプトが Cookie を受け取ると、値はすべて Cookie の名前を持つ配列に配置されます。

于 2013-06-13T14:13:14.903 に答える
1

Cookie 値は文字列のみです。

PHP が Cookie を に解析するとき$_COOKIE、特定の命名規則 (つまり、[]またはで終わる名前の Cookie [something]) により、それらは配列として表現されます。

于 2013-06-13T14:13:47.883 に答える