2016-10-25 9 views
0

私はforeachループ内で他の値の配列を追加しています。foreachループで配列の値を入れ替えよう

$i = true; 
$array = array('red', 'blue'); 
foreach($array as $key => & $value) { 
    echo $value . '<br />'; 
    if ($i === true) { 
     $others = array('white', 'yellow'); 
     foreach($others as $key => & $other_value) { 
      $array[] = $other_value;  
     } 
    } 
    $i = false; 
} 

出力

red 
blue 
white 
yellow 

しかし、私は、foreachループ内で配列値を改造したいあなたは、いくつかの深刻ななし$arrayでそれを行うことができなくなりますよう

red 
white 
yellow 
blue 
+1

リシャッフルってどういう意味ですか? –

+0

配列を最初から最後まで繰り返します。この繰り返しの間にどんな種類の再resfflingをしても私にとっては役に立たないように見え、ループの意図しない振る舞いにつながるかもしれません。 –

+0

ところで、新しい配列を配列に追加することは、1行のコードで 'array_merge'を使って行うことができます。 –

答えて

1

下の出力を必要としますarray_slice() ing。だから、ちょうど別のアレイ$resultに割り当て、あなたが$arrayの第一及び第二の要素の間に挿入さ$otherの配列を取得します。必要に応じて(何らかの理由で)

$i = true; 
$array = array('red', 'blue'); 
foreach($array as $value) { 
    $result[] = $value; // here... 
    if ($i === true) { 
     $others = array('white', 'yellow'); 
     foreach($others as $other_value) { 
      $result[] = $other_value; // and here... 
     } 

    } 
    $i = false; 
} 

$array = $result;

1

クールな解決策は次のようになりますこの:

$array = array('red', 'blue'); 
$others = array('white', 'yellow'); 

$temp = array_combine($array,$others); 

$final = array(); 

foreach($temp as $key => $value) { 
    array_push($final,$key,$value); 
} 

$array = $final; 
0
$i = true; 
$array = array('red', 'blue'); 
foreach($array as $key => & $value) { 
    echo $value . '<br />'; 
    if ($i === true) { 
      $a1= $array; 
      $a2= array($value); 
      $result=array_diff($a1,$a2); 

      $others = array('white', 'yellow'); 
      $array = array_merge($others,$result); 
    } 
    $i = false; 
} 

see output

関連する問題