根据id将项添加到数组数组

时间:2014-10-03 20:01:57

标签: php arrays

我有一个像这样设置的数组。总共有10个数组但我只显示第一个数组2.第二列的唯一ID介于1-10之间(每个只使用一次)。

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,第二列是我想要添加到第一个数组的值。

每个id(1-10)仅使用一次。如何将数组#2中的第二列添加到与##匹配的数组#1

4 个答案:

答案 0 :(得分: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 :(得分:1)

假设0始终是数组的键,而1将始终是您要添加的值,您只需要一个简单的foreach循环。< / p>

$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));

答案 2 :(得分: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

希望有所帮助:)

答案 3 :(得分: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]);
    }
}