2

わかりました、これはおそらく、24 時間以上コーディングしており、目が眩んでいるからかもしれませんが、ここで困惑しています。なぜこれが起こるのですか:

<?php
session_start();
$tmp = "インデックス";

echo "A: " . $_SESSION['page_loaded']['index']; // 1 を返す
echo "B: " . $_SESSION['page_loaded'][$tmp]; // 設定されていますが、空です
?>

ここで非常に基本的なものが欠けているように感じますが、何がわかりません。

4

5 に答える 5

2

そのコードを実際に切り取って貼り付けていないような気がしますか? 抜けているものはありますか?

于 2009-02-04T22:45:47.700 に答える
1

以下はどこで設定していますか?

$_SESSION['page_loaded'][$tmp];

以下の作品:

<?php

    session_start();
    $tmp = "index";

    $_SESSION["page_loaded"][$tmp] = "Foo";

    echo "A: " . $_SESSION['page_loaded']["index"]; // foo
    echo "<br/>";
    echo "B: " . $_SESSION['page_loaded'][$tmp]; // foo

?>
于 2009-02-04T18:09:25.480 に答える
0

使用してみてください:

$tmp = 'index'; // Note the single quotes.
//...
echo "B: " . $_SESSION['page_loaded'][$tmp];

PHP は、二重引用符と単一引用符で囲まれた文字列をわずかに異なる方法で解釈します。あなたが直面している可能性があるので、これらの記事をここここで読んでください。

更新:明確にするために(以下のコメントを考慮して)、一重引用符または二重引用符で囲まれた文字列を使用することが元のポスターの問題に影響を与えているかどうかを確認する私の理由を、2 つの文字列が等しくない以下の例に示します。

$var = 1;

$tmpA = 'index_$var'; // will resolve to index_$var
$tmpB = "index_$var"; // will resolve to index_1

if ( $tmpA === $tmpB)
  echo 'Identical';
else
  echo 'Not Identical!'; // <--- we get this because they are NOT identical.
于 2009-02-04T18:04:47.923 に答える
0

関数で試して、そのvar_dump値を確認してください。

于 2009-02-04T17:52:28.200 に答える
-5

あなたが使用する必要があります

 $_SESSION['page_loaded']['tmp'] = "index";

それ以外の

 $tmp = "index";

値を取得するには、これを使用します

  echo "B: " . $_SESSION['page_loaded']['tmp']; // the output is: B: index

(ドル記号 $ を削除します)

于 2009-02-04T18:11:47.863 に答える