我正在尝试操纵关联的多维数组。我从一个数组中提取了我想要应用于另一个值的键。 。 。
这些是我在另一个函数中提取的键
$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的形状是我想要最终得到的吗?
答案 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;
}
这适用于我的示例数组。如果阵列结构完全不同,我相信这会给你带来各种奇怪的结果/错误。