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] の下に第 2 レベルとして追加します。

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 に答える