0

$_COOKIE[array]単一の入力のデータを保存するために を使用しています。この入力は、ユーザーが同じ値を 2 回入力した場合にのみ送信されます。たとえば、リンゴ、オレンジ、バナナ、リンゴの順に送信した場合、フォームは「リンゴ」の 2 回目の出現時に送信されます。

[このチュートリアル]( http://phpprogramming.wordpress.com/2007/03/06/php-cookies-tutorial-and-examples/ )を読みました。

for ($i = 1; $i < 10; $i++) {
    if (!isset($_COOKIE[$i])) {
        setcookie("query" . [$i],$query,time()+604800,"/");
        break1;
    }
}
foreach ($_COOKIE["query"] as $key => $value) {
    echo "$key:$value";
}

次のようになるので、構文エラーである可能性があると思います。

Warning: Invalid argument supplied for foreach()

より良い方法 (mySQL ではない) を知っている場合は、お知らせください。

4

2 に答える 2

1

$_COOKIE['query'] は配列を格納できません。これは、foreach で使用しようとするとエラーが発生する理由でもあります。ただし、配列を保存する前にシリアル化できます。このようなもの

$array = array();
for ($i = 1; $i < 10; $i++) {
    $array[] = $i;
}
setcookie("query",urlencode(serialize($array)),time()+604800,"/");

$query = unserialize(urldecode($_COOKIE['query']));
foreach ($query as $key => $value) {
    echo "$key:$value";
}

urlencode / urldecode が使用される理由については、 php のこの投稿更新 Cookie 値も参照してください。

于 2012-08-07T21:14:52.913 に答える