我想用一个简单的数字索引数组的值替换多维数组的值。每个数组中的值数量相等,但是由于数组结构不同,它们没有相同的键/索引。
我相信我有一个使用array_combine,迭代和各种哈希表的解决方案,但是无法重新创建我的工作。我尝试使用array_merge
,array_combine
,遍历数组以及我可以召集的所有其他内容。我敢肯定答案很简单,但是我尝试过的一切都“几乎”起作用了。
$venue_ids = array(
0 => array(
0 => 2476 ),
1 => array(
0 => 2482,
1 => 2480,
2 => 2463 ),
2 => array(
0 => 2484,
1 => 2476,
2 => 2486,
3 => 2463 ));
$names = array(
0 => 'clubhouse',
1 => 'campground',
2 => 'lake',
3 => 'range',
4 => 'trfields',
5 => 'clubhouse',
6 => 'trfields',
7 => 'range'
);
我希望结果保留第一个数组的结构,并用第二个数组的值替换它的值。此时,我不在乎!它应该看起来像这样...
$venues = array(
0 => array(
0 => 'clubhouse' ),
1 => array(
0 => 'campground',
1 => 'lake',
2 => 'range' ),
2 => array(
0 => 'trfields',
1 => 'clubhouse',
2 => 'trfields',
3 => 'range' ));
$venue_ids
的配置将发生变化,包括其中的索引数和键/值的数目,但是始终会存在$names
的一对一匹配数字。我很乐意替换值或构造一个与$venues_id
的结构相匹配的全新数组并对其进行处理。
答案 0 :(得分:1)
您可能应该问一个关于查询的新问题,看一看是否可以获得正确的结果,但与此同时,您可以使用array_walk_recursive
来替换值:
array_walk_recursive($venue_ids, function (&$v) use (&$names) { $v = array_shift($names); });
print_r($venue_ids);
输出:
Array
(
[0] => Array
(
[0] => clubhouse
)
[1] => Array
(
[0] => campground
[1] => lake
[2] => range
)
[2] => Array
(
[0] => trfields
[1] => clubhouse
[2] => trfields
[3] => range
)
)