将索引数组值分配给多维数组?

时间:2019-08-17 07:39:59

标签: php arrays multidimensional-array

我想用一个简单的数字索引数组的值替换多维数组的值。每个数组中的值数量相等,但是由于数组结构不同,它们没有相同的键/索引。

我相信我有一个使用array_combine,迭代和各种哈希表的解决方案,但是无法重新创建我的工作。我尝试使用array_mergearray_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的结构相匹配的全新数组并对其进行处理。

1 个答案:

答案 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
        )    
)

Demo on 3v4l.org