0

次のコードを使用して、サブ配列内のすべての空のキーを次のように入力します``

$array = array(
        'note' => array('test', 'test1'),
        'year' => array('2011','2010', '2012'),
        'type' => array('conference', 'journal', 'conference'),
    );

foreach ($array['type'] as $k => $v) {
  foreach($array as $element => $a) {
    $iterator = $array[$element];
    if(!isset($iterator[$k])){       
       $iterator[$key] = '';
    }
  }
}

print_r($ array);

問題は、実際には要素を変更しているのでは$arrayなく、一時変数を変更していることです$iterator

これは簡単な質問ですが、最善かつ最速の解決策を見つけたいと思います。

4

2 に答える 2

2

タイプミスがあるようです。$keyループの途中で定義されることはありません。 $aと同じ値に$iterator[$k]する必要があるため、設定する必要はありません。

これを試して。

$array = array(
        'note' => array('test', 'test1'),
        'year' => array('2011','2010', '2012'),
        'type' => array('conference', 'journal', 'conference'),
    );

foreach ($array as $k => $v) {
  foreach($k as $element => $a) {
    if(!isset($a)){       
       $array[$element] = '';
    }
  }
}
于 2012-06-19T22:42:49.173 に答える
2

$ iterator変数は必要ありません。次のようにするだけで、次のことができます。

foreach ($array['type'] as $k => $v) {
  foreach($array as $element => $a) {
    if(!isset($array[$element][$k])){       
       $array[$element][$key] = '';
    }
  }
}

また、内側と外側のループを切り替えて、読みやすく効率的にすることをお勧めします。

foreach($array as $element => $a) {
       foreach ($array['type'] as $k => $v) {
        if(!isset($array[$element][$k])){       
           $array[$element][$key] = '';
        }
      }
    }
于 2012-06-19T22:46:59.707 に答える