3

私はPHP 5.3.5を使用していますが、私はエラーで立ち往生しています。私は$inputを見たときのforeach今foreachで参照(&)を使用すると出力配列に `&`を追加しますか?それはバグです

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

&(参照による値)を使用して、各アレイ から最初の2つの値を削除するためにarray_spliceを使用

$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' 
         ) 
      ); 

は、それは追加の配列を有しています第2のアレイの直前に&となる。

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で&を削除しても、希望の配列が得られません。私は何か間違っているのですか?

答えて

3

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

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

ありがとうございます。私は3時間以来私の頭を叩いていた。ありがとう – diEcho

+1

私は 'array_slice()'を使う方が良いと思います。 – diEcho

+0

@diEcho:彼らはさまざまなことをします。 'array_splice'は配列から要素を削除します。 'array_slice'はしません – newacct

関連する問題