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


php merge 2 arrays into one associative array

使用PHP,我需要将2个数组(长度相等的数组合并为一个关联数组)以下是我当前数据集的摘录:

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

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

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

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

等等…

如果您愿意使用这样的数组结构:

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]
    );
}

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

怎么样:

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