很抱歉,问题的标题不够准确。我最近把所有的生产资料都搬到了一个新的生产服务器上(它曾经只是一个本地主机交易)。
问题是我的阵列工作不再有效。
我曾经能够沿着这些方向做点什么:
$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];
}
}
在这一点上几乎要重写整个事情。
尝试扫描顶部的directoy并获取文件夹名称(以$ mans保存) 然后通过recursivly遍历$ mans的每个目录,并将$ mans [$ key]下的目录添加为第二级。
答案 0 :(得分: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"
}
}