3

PHP 5.3.5を使用していますが、エラーが発生します。私は配列を持っています

  $input = array( 
                0=>array(
                        'a'=>'one0',
                        'b'=>'two0',
                        'c'=>'three0',
                        'd'=>'four0',
                        'e'=>'five0'
                        ),
                1=>array(
                        'a'=>'one1',
                        'b'=>'two1',
                        'c'=>'three1',
                        'd'=>'four1',
                        'e'=>'five1'
                        )
            );

foreachで(参照による値)array_spliceを使用して、各配列から最初の2つの値を削除するために使用します&

foreach ($input as $bk => &$bv) {
         $op[]=array_splice($bv,0,2);        
}

さて、それを見ると、2番目の配列の直前に$input追加されます。&

var_dump($input);これを示しています

array
  0 => 
    array
      'c' => string 'three0' (length=6)
      'd' => string 'four0' (length=5)
      'e' => string 'five0' (length=5)
  1 => & <====================================From where this `&` comes?
    array
      'c' => string 'three1' (length=6)
      'd' => string 'four1' (length=5)
      'e' => string 'five1' (length=5)

どこ&から来て、どのようにそのような配列を生成しますか?有効ですか?

foreachで削除する&と、目的の配列が得られません。私は何か間違ったことをしていますか?

4

1 に答える 1

3

かなり直感に反しますが、実際にはバグではありません。ループで参照を使用する場合は、ループの直後に参照の設定を解除することをお勧めします。

foreach ($input as $bk => &$bv) {
    $op[]=array_splice($bv,0,2);        
}
unset($bv);
于 2012-05-10T10:20:12.497 に答える