2014-02-16 3 views
1

У меня есть этот массив:Перемещение элемента из одного массива в другой

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

То, что я хочу сделать, это сделать первые 3 элемента, удалить их и создать новый массив с ними.

Таким образом, вы бы это:

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

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

Как я могу выполнить это действие Благодаря

+0

И в чем проблема в точности? – jeroen

+0

как мне выполнить эту задачу – Arken

+0

Что у вас есть? – jeroen

ответ

2

Следующий код должен служить вашей цели:

$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

Дорогой путник, могу я знать, что случилось с моим ответом? –

+1

Слишком быстро судить и ниспровергать, но никогда не дают ответа, который может быть лучше – AdRock

4

array_slice() скопирует первые х элементы $arr1 в $arr2, а затем вы можете использовать array_diff_assoc(), чтобы удалить эти элементы из $arr1. Вторая функция будет сравнивать оба ключа и значения, чтобы исключить удаление только соответствующих элементов.

$x = 3; 
$arr2 = array_slice($arr1, 0, $x, true); 
$arr1 = array_diff_assoc($arr1, $arr2); 
Смежные вопросы