将元素从一个数组移动到另一个数组

4

我有一个数组:

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

我希望做的是取出前三个元素,将它们删除并创建一个新的数组。
所以你会得到这个:
$arr1 = array(
  '54' => 'sdfsdf2',
  '53' => '2ssdf',
  '62' => 'sfds'
);

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

我该如何执行这个操作?谢谢。


那么问题到底是什么? - jeroen
我该如何执行这个任务? - Al Hennessey
你目前有什么进展? - jeroen
这是一个非常直截了当的问题,我自己也在思考。 - Jason Basanese
2个回答

5

array_slice() 函数将会把 $arr1 的前 x 个元素复制到 $arr2,然后你可以使用array_diff_assoc() 来从 $arr1 中移除这些元素。第二个函数会比较键和值以确保只有适当的元素被删除。

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

4
以下代码能够满足您的需求:
$arr1 = array(
 '76' => '1sdf',
 '43' => 'sdf2',
 '34' => 'sdf2',
 '54' => 'sdfsdf2',
 '53' => '2ssdf',
 '62' => 'sfds'
); // the first array
$arr2 = array(); // the second array
$num = 0; // a variable to count the number of iterations
foreach($arr1 as $key => $val){
  if(++$num > 3) break; // we don’t need more than three iterations
  $arr2[$key] = $val; // copy the key and value from the first array to the second
  unset($arr1[$key]); // remove the key and value from the first
}
print_r($arr1); // output the first array
print_r($arr2); // output the second array

输出结果将是:
Array
(
    [54] => sdfsdf2
    [53] => 2ssdf
    [62] => sfds
)
Array
(
    [76] => 1sdf
    [43] => sdf2
    [34] => sdf2
)

Demo


2
亲爱的点踩者,能告诉我我的回答哪里有问题吗? - Sharanya Dutta
1
过于草率地进行评判和点踩,却从未给出更好的答案。 - AdRock
他的回复正是我所需要的。 - Sunchock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接