2014-10-03 66 views
0

我有一個像這樣設置的數組數組。總共有10個數組,但我只顯示前2個。第二列有一個介於1-10之間的唯一ID(每個只使用一次)。將項目添加到基於ID的數組數組

Array 
(
    [0] => Array 
     (
      [0] => User1 
      [1] => 5 
     ) 

    [1] => Array 
     (
      [0] => User2 
      [1] => 3 
     ) 
) 

我有陣列的另一個數組:

Array 
(
    [0] => Array 
     (
      [0] => 3 
      [1] => 10.00 
     ) 

    [1] => Array 
     (
      [0] => 5 
      [1] => 47.00 
     ) 
) 

其中第一列是id和第2欄是我要添加到所述第一陣列值。

每個id(1-10)僅被使用一次。我會如何去添加第2列到匹配ID#的數組#1的第二列?

回答

2

這裏有很多方法可以做到這:)這是其中的一種,優化搜索第二陣列和走在第一個:

Live example

<? 
$first_array[0][] = 'User1'; 
$first_array[0][] = 5; 
$first_array[1][] = 'User2'; 
$first_array[1][] = 3; 

$secnd_array[0][] = 3; 
$secnd_array[0][] = 10.00; 
$secnd_array[1][] = 5; 
$secnd_array[1][] = 47.00; 

// Make the user_id the key of the array 
foreach ($secnd_array as $sca) { 
    $searchable_second_array[ $sca[0] ] = $sca[1]; 
} 
// Modify the original array 
array_walk($first_array, function(&$a) use ($searchable_second_array) { 
    // Here we find the second element of the first array in the modified second array :p 
    $a[] = $searchable_second_array[ $a[1] ]; 
}); 

// print_r($first_array); 
1

假設0將始終是陣列的關鍵字,並且1將始終是您想要添加的值,但只需一個簡單的foreach循環即可。

哪裏$initial爲您提供的第一陣列和$add是第二:

<?php 

$initial = array(array("User1", 5), 
    array("User2", 3)); 

$add = array(
    array(0, 10.00), 
    array(1, 47.00)); 

foreach ($add as $item) { 
    if (isset($initial[$item[0]])) { 
     $initial[$item[0]][] = $item[1]; 
    } 
} 

printf("<pre>%s</pre>", print_r($arr1[$item[0]], true)); 
+0

不應該是:'的printf( 「

%s
」 的print_r($初始[$項目[0],真) );'?而這隻會返回一個元素 – 2014-10-03 20:15:38

1

我做不知道如果我得到你的權利,但我想出了一個解決方案XD

<?php 
$array_1 = array(
    0 => array(
     0 => 'ID1', 
     1 => 5 
    ), 
    1 => array(
     0 => 'ID2', 
     1 => 3 
    ) 
); 

$array_2 = array(
    0 => array(
     0 => 3, 
     1 => 10.00 
    ), 
    1 => array(
     0 => 5, 
     1 => 47.00 
    ) 
); 


foreach($array_1 as $key_1 => $arr_1){ 
    foreach($array_2 as $key_2 => $arr_2){ 
    if($arr_2[0] == $arr_1[1]){ 
     $array_1[$key_1][2] = $arr_2[1]; 
    } 
    } 
} 

var_dump($array_1); 

?> 

演示:https://eval.in/201648

簡短的版本是這樣的:

<?php 
$array_1 = array(array('ID1',5),array('ID2',3)); 

$array_2 = array(array(3,10.00),array(5,47.00)); 


foreach($array_1 as $key => $arr_1){ 
    foreach($array_2 as$arr_2){ 
    if($arr_2[0] == $arr_1[1]){ 
     $array_1[$key][2] = $arr_2[1]; 
    } 
    } 
} 

var_dump($array_1); 

?> 

演示:https://eval.in/201649

希望幫助:)

1

一個快速和骯髒方式只是向您展示的更多的自我解釋的方式來做到這一點:)一個

$users = array(
    0 => array(
     0 => 'User1', 
     1 => 123 
    ), 
    1 => array(
     0 => 'User2', 
     1 => 456 
    ) 
); 

$items = array(
    0 => array(
     0 => 123, 
     1 => 'Stuff 1' 
    ), 
    1 => array(
     0 => 456, 
     1 => 'Stuff 2' 
    ) 
); 

foreach($items as $item){ 
    foreach($users as $key => $user){ 
     if($item[0] == $user[1]) 
      array_push($users[$key], $item[1]); 
    } 
}