2

使用 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
    )

等等...

4

3 回答 3

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]
    );
}
于 2013-06-23T01:39:31.660 回答
0

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

于 2013-06-23T01:49:31.563 回答
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
    )
于 2013-06-23T09:49:54.360 回答