2011-02-18 80 views
1

所以我有類似如下的數組:PHP多維數組的問題

Array 
(
    [0] => Array 
     (
      [user_id] => 684 
      [sec_id] => 2 
      [rank_id] => 1 
      [rank] => usr 

     ) 

    [1] => Array 
     (
      [user_id] => 693 
      [sec_id] => 3 
      [rank_id] => 5 
      [rank] => usr 

     ) 
) 

我有另一個數組這樣

Array 
(
    [0] => 2 
    [1] => 7 
    [2] => 27 
) 

我想在要添加的第二陣列的價值第一個數組的每個數組的末尾,並且它應該相乘。我的意思是,如果我在第一個數組中有100個數組,並且第二個數組中有3個元素,那麼在結果數組中應該有300個。

以例如上面的,我想有一些如下:

user_id | sec_id | rank_id | rank | menu_id 
684 |  2 |  1 | usr | 2 
684 |  2 |  1 | usr | 7 
684 |  2 |  1 | usr | 27 
693 |  3 |  5 | usr | 2 
693 |  3 |  5 | usr | 7 
693 |  3 |  5 | usr | 27 

我試着用下面的功能,但它不工作。

function getR($arr_one,$arr_two) { 
    foreach ($arr_one as $k=>&$v) { 
     foreach ($arr_two as $x=>&$y) { $v['menu_id'] = $y; } 
    } 
    return $arr_one; 
} 

這僅僅是一種製造陣列是這樣的:

user_id | sec_id | rank_id | rank | menu_id 
684 |  2 |  1 | usr | 27 
693 |  3 |  5 | usr | 27 

手段,它只是在第一陣列中的每個元素的末尾添加menu_id,但不是相乘。任何想法,我肯定會錯過一些東西。

謝謝你們。

回答

2
function getR($arr_one,$arr_two) { 
    $new_arr = array(); 
    foreach ($arr_one as $k=>$v) { 
     foreach ($arr_two as $x=>$y) { 
      $this_item = $v; 
      $this_item['menu_id'] = $y; 
      $new_arr[] = $this_item; 
     } 
    } 
    return $new_arr; 
} 
+0

謝謝,這是完美的工作......我只需要添加$ new_arr [] = $ v;在頂部啓動$ new_arr之後。謝謝Spudley。 – 2011-02-18 20:36:01

0

未經測試我想象這樣的事情(伊克!):

function getR($arr_one, $arr_two) 
{ 
    $second_key = 0; 
    foreach ($arr_one as $k => &$v) 
    { 
     $v['menu_id'] = $second_key++; 
     if (3 == $second_key) $second_key = 0; 
    } 
    return $arr; 
} 

想必,你是通過引用傳遞的第一陣列?不知道什麼$arr是,你回來,雖然...

+0

編輯,對於錯字抱歉,我正在返回$ arr_one。 – 2011-02-18 20:29:29

1

我不會問...但試試這個:

<?php 

function crazy ($arr1,$arr2) { 
    foreach ($arr1 as $key=>$value) { 
     foreach ($arr2 as $value2) { 
     $nvalue=$value; 
     $nvalue[]=$value2; 
     $new[]=$nvalue; 
     } 
    } 
return $new; 
} 

$arr1=array(array('user'=>1,'dude'=>2),array('user'=>2,'dude'=>3)); 
$arr2=array(2,7,27); 

print_r(crazy($arr1,$arr2)); 

這太測試,http://www.ideone.com/Of126

+0

哎呀,我只是試着用Spudley的解決方案,它的工作,但你的也很好。謝謝您的幫助。 – 2011-02-18 20:36:49