0

PHP の merge_array に問題があります。HTML フォームのボタンから要素 ID を取得する Cookie を作成しています。次に、Cookie を作成します。 3600)。$array1 をフォームの要素 ID と結合し、Cookie 要素を取得する $array2 をマージする配列を作成したいと考えています。ページの購入ボタンをクリックすると問題が発生します。配列には常に 2 つの要素 (新しい要素と Cookie 配列の要素) があります。Array ( [0] => [1] => Array ( [info] => 16 id を使用して名前、写真、その他のプロパティを取得できるように、2 つ以上の要素を持つ配列 $result を取得しようとしています。ショッピングカート

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
$array1=array($_REQUEST["ELEMENT_ID"]);

if(!isset($_COOKIE["info"])){
    setcookie("info", $_REQUEST["ELEMENT_ID"]+1, time()+3600);
    $w = $_REQUEST["ELEMENT_ID"]+1;
    print_r($_COOKIE);
}
echo"<br/>";
$array2=array($_COOKIE);
$result= array_merge($array1, $array2);
print_r($result);

?>

4

1 に答える 1

0

編集:

あなたが何をしたいのかをよりよく理解できたので、ここで私が提案することを示します。履歴データを Cookie に保存し、これを配列に維持したいので、データを ID のシリアル化された配列として Cookie に保存します。ここで行うことは、現在の ELEMENT_ID を取得し、それに 1 つ追加して、その値を Cookie に保存することです。これにより、既にあるものは上書きされます。したがって、すべてのコードを次のように置き換えます。

<?php
    // do your checks
    if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

    // 1: if cookie exists, grab the data out of it
    $historical_element_ids = array(); // initialize the variable as an array
    if(isset($_COOKIE['info'])){
        // retrieve the previous element ids as an array
        $historical_element_ids = unserialize($_COOKIE['info']);
    }

    // 2: add the new id to the list of ids (only if the id doesn't already exist)
    // the cookie will remain unchanged if the item already exists in the array of ids
    if(!in_array($_REQUEST['ELEMENT_ID'], $historical_element_ids)){
        $historical_element_ids[] = $_REQUEST['ELEMENT_ID']; // adds this to the end of the array

        // 3: set the cookie with the new serialized array of ids
        setcookie("info", serialize($historical_element_ids), time()+3600);
    }

    // display the cookie (should see a serialized array of ids)
    print_r($_COOKIE);
    echo"<br/>";

    // accessing the cookie's values
    $result = unserialize($_COOKIE['info']);
    print_r($result);
?>
于 2012-06-20T12:42:49.160 に答える