0

私はこれをやろうとしています:

setCookie('visitor', array(0 => 'one', 1 => 'two'), time()+3600, COOKIEPATH, COOKIE_DOMAIN, false);

しかし、私はそれを機能させることができません。PHPリファレンスでは、「$value as string[optional]」について説明しています。これは、(私の理解では)引数として文字列の配列を受け入れる必要があります。これと同様のことを達成するのを手伝ってください。または、php 参照 ( string[optional] ) の理解が間違っている場合は修正してください。

setcookie 関数の宣言は次のとおりです。

setcookie($name, $value, $expire, $path, $domain, $secure, $httponly);
4

2 に答える 2

4

代わりに使用serialize(array(0 => 'one', 1 => 'two'))します。

unserialize()配列を再度取得する場合に使用します。

いいえ:関数が文字列を必要としているとphpマニュアルに記載されている場合...それは文字列を意味します。文字列の配列ではありません。

【オプション】にだまされているかも?角かっこは何の意味もありません。「[optional]」全体は、このパラメーターなしで関数を呼び出すことができることを意味します。

于 2012-05-19T13:21:06.150 に答える
1

関数で型をオーバーロードできる場合はsetcookie()、配列をループに渡すことでそれを行います。配列をサポートしていないため、関数の外側で foreach ループを使用します。

foreach (array(0 => 'one', 1 => 'two') as $key => $value) {
    setcookie('visitor[' . $key . ']', $value, time()+3600, COOKIEPATH, COOKIE_DOMAIN, false);
)

var_dump($_COOKIE);

これにより...

array(1) {
    ["visitor"]=>
    array(2) {
        [0]=>
        string(3) "one"
        [1]=>
        string(3) "two"
    }
}
于 2012-09-26T19:32:48.950 に答える