1

抱歉,如果问题的标题不够准确。我最近将我所有的生产资料转移到了一个新的生产服务器(它曾经只是一个本地主机交易)。

问题是我的很多阵列工作不再有效。

我曾经能够按照这些思路做一些事情:

$arrtest = array();
$arrtest[1]="a";
$arrtest[1][2]="b";
var_dump($arrtest);

输出

array(2) {
  [1]=>
  string(1) "a"
  [2]=>
  array(1) {
    [2]=>
    string(1) "b"
  }
}

这将与以下内容相同:

$foo = array(1=>'a',array(2=>'b'));

但是,方括号不再“假设”一个数组。这是新的生产示例:

$arrtest = array();
$arrtest[1]="a";
$arrtest[1][2]="b";
var_dump($arrtest);

输出

array(1) {
  [1]=>
  string(3) "a b"
}

我假设我在 php.ini 中缺少一个愚蠢的设置?我找不到我要找的东西,因为我不知道如何表达这个问题。

编辑 真实世界示例,因为即使我的问题本身也令人困惑。

foreach($mans as $key2=>$val2){
$models = scandir($level1.'/'.$val2);
    foreach($models as $key3=>$val3){
        if(substr($val3,0,1)==='.'){
            unset($models[$key3]);
        }
            $mans[$key2][]=$models[$val3];
    }
}

在这一点上几乎要重写整个事情。

尝试扫描顶级目录并获取文件夹名称(保存在 $mans 中)然后递归遍历 $mans 的每个目录并将其目录添加到 $mans[$key] 下作为第二级。

4

1 回答 1

1

你有一些时髦的逻辑。您的第一个示例不可能产生第一个输出。

您正在将 $arrtest[1] 设置为字符串,但随后您尝试将其设置为数组。它是哪一个?

$arrtest = array();
// You need to initialize the array here
$arrtest[1]=array();
$arrtest[1][]="a";
$arrtest[1][2]="b";
var_dump($arrtest);

此示例匹配您的原始输出:

$arrtest = array();
// You need to initialize the array here
$arrtest[1]="a";
$arrtest[][2]="b";
var_dump($arrtest);

就像这样:

$arrtest = array();
// You need to initialize the array here
$arrtest[1]="a";
$arrtest[2][2]="b";
var_dump($arrtest);

输出:

array(2) {
  [1]=>
  string(1) "a"
  [2]=>
  array(1) {
    [2]=>
    string(1) "b"
  }
}
于 2013-03-08T19:58:02.053 回答