PHP:结合两个保持重复键的数组?

时间:2014-02-28 19:14:30

标签: php arrays multidimensional-array foreach

如何组合第一个数组包含重复键的两个数组?例如结合以下内容:

$keys_arr
Array
    (
        [0] => iPhone
        [1] => iPhone
        [2] => iPhone
        [3] => Samsung
    )

$values_arr
Array
(
    [0] => 5
    [1] => 5
    [2] => 5
    [3] => Galaxy IV
)

我正在寻找的结果是:

$combined_array
Array
    (
        [iPhone] => 5
        [iPhone] => 5
        [iPhone] => 5
        [Samsung] => Galaxy IV
    )

使用以下foreach(PHP - merge two arrays similar to array_combine, but with duplicate keys):

foreach ($keys_arr as $key => $value) {
    $combined_array[] = array($value => $values_arr[$key]);
}

我明白了:

Array
(
    [0] => Array
        (
            [iPhone] => 5
        )

    [1] => Array
        (
            [iPhone] => 5
        )

    [2] => Array
        (
            [iPhone] => 5
        )

    [3] => Array
        (
            [Samsung] => Galaxy IV
        )

)

我哪里错了?

1 个答案:

答案 0 :(得分:0)

php的关联数组需要有值的唯一键 - 虽然你可以拥有完全相同的值(即:5, 5, 5),但键必须是不同的。

您可以“解决”这种方法的一种方法是在重复的情况下使用链接列表数据结构;这会导致;

$iPhone = {(5), (5), (5)}

$Samsung = Galaxy IV

实现这一目标的一个简单的解决方法是使用多维数组;即:

Array[iPhone]将包含一个单独的数组,其中包含{5, 5, 5}

您可以在此处阅读有关实际链接列表的更多信息; http://www.php.net/manual/en/class.spldoublylinkedlist.php