1

助けが必要です。以下のコードは私のローカルホスト、php5.3+では正常に動作しますが、サーバーでは正常に動作しません。5.2

    $_SESSION['myinv_id'] = $setinvid;
    $_SESSION['prod_name'][$i] = $prod_name;    
    $_SESSION['qty'][$i] = $clean_qty;
    $_SESSION['price'][$i] = $clean_price;
    $_SESSION['total'][$i] = $clean_total;
    $_SESSION['desc'][$i] = $desc;

var_dump を実行したとき

初めてコンテンツが追加されたとき、私はこれらを持っていました。

    array(5) { 
     ["prod_name"]=> array(1) {[0]=> string(4) "SDFD" }
     ["qty"]=> array(1) {[0]=> string(2) "43"} 
     ["price"]=> array(1) { [0]=> string(2) "43" } 
     ["total"]=> array(1) { [0]=> string(4) "1849" } 
     ["desc"]=> array(1) { [0]=> string(6) "dsfsdf" } } 

正常に動作します....配列が返されますが、2番目の値を追加しようとすると...これらのエラーが発生します... Fatal Error [] not expected for strings..var_dumpを実行したとき... iこれらがあった...これらの場合、 ['prod_name'] & ['desc'] は必然的に配列から文字列に変更され、配列値をステークにプッシュすることはできません。

    array(5) { 
     **["prod_name"]=> &string(5) "dddsd"** 
      ["qty"]=> &array(2) { 
        [0]=> string(2) "43" 
       [2]=> string(2) "45" }
       ["price"]=> &array(2) { 
  [0]=> string(2) "43" 
     [2]=> string(1) "3" } 
     ["total"]=> &array(2) { 
[0]=> string(4) "1849" 
        [2]=> string(3) "135" } 
      **["desc"]=> &string(7) "dsddadd"** } 

問題の原因を教えてください。使用する前に、このセッション変数を空の配列として宣言しようとしましたが、役に立ちませんでした。

4

1 に答える 1

2

あなたの質問は、なぜ私のセッション配列が不思議なことにそれ自体で変更されているのですか?

PHP構成がregister_globals有効になっ$varている場合$_SESSION['var']、同じ変数になります(参照を介して)。に値を$var代入すると、値も$_SESSION['var']

思い出せませんが、2 つの変数間の参照は、session_start が呼び出されたときにのみ確立される可能性があります。また、これはグローバルスコープでのみ発生すると思います。

于 2012-07-02T15:55:11.057 に答える