4 Stimmen

Verschieben Sie ein Element von einem Array in ein anderes

Ich habe dieses Array:

$arr1 = array(
 '76' => '1sdf',
 '43' => 'sdf2',
 '34' => 'sdf2',
 '54' => 'sdfsdf2',
 '53' => '2ssdf',
 '62' => 'sfds'
);

Was ich tun möchte, ist die ersten 3 Elemente nehmen, sie entfernen und ein neues Array mit ihnen erstellen.

Dann hätten Sie dies:

$arr1 = array(
  '54' => 'sdfsdf2',
  '53' => '2ssdf',
  '62' => 'sfds'
);

$arr2 = array(
  '76' => '1sdf',
  '43' => 'sdf2',
  '34' => 'sdf2'
);

Wie kann ich diese Aktion durchführen? Danke

5voto

miken32 Punkte 39375

array_slice() wird die ersten x Elemente von $arr1 in $arr2 kopieren, und dann können Sie array_diff_assoc() verwenden, um diese Elemente aus $arr1 zu entfernen. Die zweite Funktion vergleicht sowohl Schlüssel als auch Werte, um sicherzustellen, dass nur die entsprechenden Elemente entfernt werden.

$x    = 3;
$arr2 = array_slice($arr1, 0, $x, true);
$arr1 = array_diff_assoc($arr1, $arr2);

4voto

Sharanya Dutta Punkte 3985

Der folgende Code sollte Ihren Zweck erfüllen:

$arr1 = array(
 '76' => '1sdf',
 '43' => 'sdf2',
 '34' => 'sdf2',
 '54' => 'sdfsdf2',
 '53' => '2ssdf',
 '62' => 'sfds'
); // das erste Array
$arr2 = array(); // das zweite Array
$num = 0; // eine Variable, um die Anzahl der Iterationen zu zählen
foreach($arr1 as $key => $val){
  if(++$num > 3) break; // wir benötigen nicht mehr als drei Iterationen
  $arr2[$key] = $val; // kopiere den Schlüssel und den Wert aus dem ersten Array in das zweite
  unset($arr1[$key]); // entferne den Schlüssel und den Wert aus dem ersten Array
}
print_r($arr1); // gib das erste Array aus
print_r($arr2); // gib das zweite Array aus

Die Ausgabe wird sein:

Array
(
    [54] => sdfsdf2
    [53] => 2ssdf
    [62] => sfds
)
Array
(
    [76] => 1sdf
    [43] => sdf2
    [34] => sdf2
)

Demo

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X