-1

PHP の構成オプションや、次のような配列を許可するかどうかを指定する Web サーバー上の何かがありますか。

$i['addme']["A".$temp[1]] = $v;

何らかの理由で、このコードは Netfirms サーバーで動作していましたが、VPS ホストに変更したところ、値が保持されません...

理由はありますか?

=============

編集1:以下の詳細:

正確なコード:

foreach ($_POST as $k => $v) {
    $temp = explode("_", $k);//_p($temp);
    if ($temp[0] == "ATTRIBUT") {
        $i['addme']["A".$temp[1]] = $v;

        // debugging test below
        echo $v;  // THIS WORKS
        echo $i['addme']["A".$temp[1]]; // EMPTY DATA
    }
}
  • POST 配列の内容を印刷すると、データが表示されます。
  • $temp配列の内容を印刷すると、データが表示されます
  • $vデータをに割り当てた直後に$i['addme']、それとその空をチェックします。

つまり、このスクリプトでは、$v 文字列をチェックするとデータが表示されますが、$i 文字列をエコーすると、空です...

アイデア?

=============

編集2:

$ii代わりに(2文字の変数)をテスト$iしたところ、機能しました...なぜですか?

サイドノート:私はまだ問題を解決したいのですが、20 000行のコードで1文字の配列をすべて変更したくありません...

=============

編集3:

奇妙なこと$i = array();に、スクリプトの前に置くと機能します。

なんで?

4

3 に答える 3

2

著者は答えを間接的に示していると思います: 彼は「$i を使用すると問題が発生しますが、$ii を使用すると問題ありません」のようなことを言っています。$i は以前に別の目的で使用されたものですか? $i は配列として定義され、最初に使用する前に初期化されますか? 著者が提示するコード フラグメントは、上位レベルの他の制御構造から呼び出されますか?

于 2012-05-02T06:21:43.360 に答える
0

最初に、すべての投稿変数に「ATTRIBUT_XXX」が含まれているかどうかを確認してください。ここで、XXX は何らかの値です。投稿フィールドに ATTRIBUT_ または ATTRIBUT だけが含まれていて、2 番目の値が含まれていない可能性があるためです。

エラー報告が無効になっているか、警告が返されないように緩んでいる可能性があります

于 2012-05-02T05:37:47.883 に答える
0

サーバーでこのスニペットを実行して、詳細を教えてください

$_POST = array('ATTRIBUT'=>'hello','ATTRIBUT_efg'=>'how','ATTRIBUT_xyz'=>'are you');
$i = array();
foreach ($_POST as $k => $v) {
    $temp = explode("_", $k);//_p($temp);
    if ($temp[0] == "ATTRIBUT") {
        $i['addme']["A".$temp[1]] = $v;

        // debugging test below
       // echo $v;  // THIS WORKS
        echo $i['addme']["A".$temp[1]]; // EMPTY DATA
    }
}
print_r($i);**strong text**
于 2012-05-02T06:23:12.403 に答える