php将2个数组合并为一个关联数组

时间:2013-06-23 01:30:51

标签: php arrays merge associative-array array-merge

使用PHP我需要合并2个数组(长度相等到一个关联数组)这里是我当前数据集的摘录:

[1] => Array
    (
        [0] => C28
        [1] => C29
    )

[2] => Array
    (
        [0] => 1AB010050093
        [1] => 1AB008140029
    )

元素[1]和[2]实际上很多比仅仅2个子元素更长(就像我说的,这是一个摘录)。

这笔交易是第一个数组中的“C28”对应于第二个数组中的“1AB010050093”,依此类推......我需要的结果是创建一个如下所示的新关联数组:

[1] => Array    
    (
        ['ref']  => C28
        ['part'] => 1AB010050093
    )
[2] => Array
    (
        ['ref'] => C29
        ['part'] => 1AB008140029
    )

依旧......

3 个答案:

答案 0 :(得分:4)

如果你愿意与这样的数组结构妥协:

array(
    'C28' => '1AB010050093',
    'C29' => '1AB008140029'
);

然后您可以使用array_combine()Codepad Demo):

array_combine($refNumbers, $partIds);

否则,您需要使用foreach(Codepad Demo):

$combined = array();

foreach($refNumbers as $index => $refNumber) {
    if(!array_key_exists($index, $partIds)) {
        throw OutOfBoundsException();
    }

    $combined[] = array(
        'ref'  => $refNumber,
        'part' => $partIds[$index]
    );
}

答案 1 :(得分:0)

如果您使用的是PHP 5.5+,则会有一个名为array_column()的新方法,该方法将获取特定列中的所有值。这可能会被使用,虽然我认为只是一个简单的foreach循环可能仍然是你最好的选择。

答案 2 :(得分:0)

怎么样:

$arr1 = array(
    0 => 'C28',
    1 => 'C29',
);

$arr2 = array(
    0 => '1AB010050093',
    1 => '1AB008140029',
);
$result = array();
for ($i=0; $i<count($arr1); $i++) {
    $result[] = array('ref' => $arr1[$i], 'part' => $arr2[$i]);
}
print_r($result);

<强>输出:

[1] => Array
    (
        [0] => C28
        [1] => C29
    )

[2] => Array
    (
        [0] => 1AB010050093
        [1] => 1AB008140029
    )