导致 1 个字母 PHP 数组失败的服务器配置/PHP


Server config / PHP that cause 1 letter PHP array to fail?

是否有PHP的配置选项或Web服务器上的任何内容,用于允许或不允许如下所示的数组:

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

出于某种原因,这段代码在 Netfirm 服务器上工作,现在我更改为 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();放在脚本之前时,它起作用了。

为什么?

我认为

作者间接指出了答案:他说"如果我使用$i,我有问题,但如果我使用$ii,那没关系"。以前$i用过别的东西?$i定义为数组并在首次使用前初始化?作者呈现的代码片段是从更高级别的任何其他控制结构调用的?

首先看看

所有帖子变量是否包含"ATTRIBUT_XXX",其中XXX是某个值。 因为您的帖子字段可能只包含ATTRIBUT_或归因,并且其中没有第二个值。

您的错误报告可能被禁用或松散,就像它不会向您返回任何警告一样

尝试在服务器中运行此代码片段并告知详细信息

$_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**