php将键与关联多维数组中的值组合在一起

时间:2015-04-23 22:23:01

标签: php arrays multidimensional-array associative-array

我正在尝试操纵关联的多维数组。我从一个数组中提取了我想要应用于另一个值的键。 。 。

这些是我在另一个函数中提取的键

$keys = array (
    "id" => "id",
    "addr_street_num" => "addr_street_num",
    "addr_street" => "addr_street",
    "price" => "price",
    "days" =>"days",
    "state" => Array
        (
            "id" => "id",
            "name" => "name"
        ),

    "city" => Array
        (
            "id" => "id",
            "web_id" => "web_id",
            "name" => "name"
        )
);

这个数组有我想要组合在一起的值

$vals = array (
    "0" => "830680",
    "1" => "20",
    "2" => "Sullivan Avenue",
    "3" => "333000",
    "4" => "12",
    "5" => Array
        (
             "0" => "4",
             "1" => "Maryland",
        ),

    "6" => Array
        (
            "0" => "782",
            "1" => "baltimore",
            "2" => "Baltimore",
        )
);

当我尝试做array_combine($ keys,$ val)时; 我得到关于数组到字符串转换的2个注意事项

我猜array_combine只适用于一维数组,有关如何处理这个问题的想法吗?

如果$ keys被修改了它可以与值结合 - 问题是$ keys的形状是我想要最终得到的吗?

1 个答案:

答案 0 :(得分:1)

可以递归地完成。

function combine_recursive($keys, $values) {
    $result = array();
    $key = reset($keys);
    $value = reset($values);
    do {
        if (is_array($value)) {
            $result[key($keys)] = combine_recursive($key, $value);
        } else {
            $result[key($keys)] = $value;
        }
        $value = next($values);
    } while ($key = next($keys));
    return $result;
}

这适用于我的示例数组。如果阵列结构完全不同,我相信这会给你带来各种奇怪的结果/错误。