2013-08-20 36 views
0

我有两个阵列,我需要取决于$arr[0]["num"]从数组中取出的值,并把该值到另一个数组

$arr = array(
0 => array(
    "id" => 24, 
    "num" => 2 
), 
1 => array(
    "id" => 25, 
    "num" => 5 
) 
2 => array(
    "id" => 26, 
    "num" => 3 
) 
); 
$array = array('1','2','3','4','5','6','7','8','9','10'); 
$new = array(); 
foreach($arr as $key){ 
    for($i=0;$i<$key['num'];$i++){ 
     $new[$key['id']][$i] = $array[$i]; 
    } 
} 

的值,以提取第二数组的值是它能够去除第二个数组的值,并将其转移到一个新的数组?

我的循环所做的只是在每个循环之后从开始复制值。我想从第二个数组中删除复制的值。

输出应该是这样的:

Array 
(
[24] => Array 
    (
     [0] => 1 
     [1] => 2 
    ) 

[25] => Array 
    (
     [0] => 3 
     [1] => 4 
     [2] => 5 
     [3] => 6 
     [4] => 7 
    ) 
[26] => Array 
    (
     [0] => 8 
     [1] => 9 
     [2] => 10 
    ) 
) 

回答

1

我建议使用array_shift

$arr = array(
    array(
    "id" => 24, 
    "num" => 2 
), 
    array(
    "id" => 25, 
    "num" => 5 
), 
    array(
    "id" => 26, 
    "num" => 3 
) 
); 
$array = array('1','2','3','4','5','6','7','8','9','10'); 
$new = array(); 
foreach($arr as $key){ 
    for($i=0;$i<$key['num'];$i++){ 
     $new[$key['id']][$i] = $array[0]; // *1 
     array_shift($array); 
    } 
} 
echo '<pre>'; 
print_r($new); 

* 1,你必须改变这条线也是如此。由于array_shift移除了第一个数组项,每次迭代都应该访问数组[0]。

输出:

Array 
(
    [24] => Array 
     (
      [0] => 1 
      [1] => 2 
     ) 

    [25] => Array 
     (
      [0] => 3 
      [1] => 4 
      [2] => 5 
      [3] => 6 
      [4] => 7 
     ) 

    [26] => Array 
     (
      [0] => 8 
      [1] => 9 
      [2] => 10 
     ) 

) 
+0

这为我工作。谢谢! – addykha

1

试试这个

foreach($arr as $key){ 
    for($i=0;$i<$key['num'];$i++){ 
     $new[$key['id']][$i] = $array[$i]; 

     // unset previous values, in first iteration it will remove 0, 1 
     unset($array[$i]); 
    } 
    // reset the array keys, so for loop $i will start from 0 
    $array = array_values($array); 
} 

输出:

array (size=3) 
    24 => 
    array (size=2) 
     0 => string '1' (length=1) 
     1 => string '2' (length=1) 
    25 => 
    array (size=5) 
     0 => string '3' (length=1) 
     1 => string '4' (length=1) 
     2 => string '5' (length=1) 
     3 => string '6' (length=1) 
     4 => string '7' (length=1) 
    26 => 
    array (size=3) 
     0 => string '8' (length=1) 
     1 => string '9' (length=1) 
     2 => string '10' (length=2) 
相关问题